From eaba2391e0b75bc86fa381c333b2e841765a6c33 Mon Sep 17 00:00:00 2001 From: Luke Street Date: Tue, 18 Mar 2025 21:25:59 -0600 Subject: [PATCH] arm: Fix thumb & data decoding, add tests --- objdiff-core/src/arch/arm.rs | 173 +- objdiff-core/tests/arch_arm.rs | 17 + objdiff-core/tests/data/arm/thumb.o | Bin 0 -> 32576 bytes .../tests/snapshots/arch_arm__read_arm-2.snap | 6 +- .../tests/snapshots/arch_arm__read_arm-3.snap | 6 +- .../tests/snapshots/arch_arm__read_arm.snap | 2 +- .../snapshots/arch_arm__read_thumb-2.snap | 1480 +++++++ .../snapshots/arch_arm__read_thumb-3.snap | 110 + .../tests/snapshots/arch_arm__read_thumb.snap | 3808 +++++++++++++++++ 9 files changed, 5549 insertions(+), 53 deletions(-) create mode 100644 objdiff-core/tests/data/arm/thumb.o create mode 100644 objdiff-core/tests/snapshots/arch_arm__read_thumb-2.snap create mode 100644 objdiff-core/tests/snapshots/arch_arm__read_thumb-3.snap create mode 100644 objdiff-core/tests/snapshots/arch_arm__read_thumb.snap diff --git a/objdiff-core/src/arch/arm.rs b/objdiff-core/src/arch/arm.rs index 9750a68..4e0a015 100644 --- a/objdiff-core/src/arch/arm.rs +++ b/objdiff-core/src/arch/arm.rs @@ -84,18 +84,11 @@ impl ArchArm { .filter_map(|s| DisasmMode::from_symbol(&s)) .collect(); mapping_symbols.sort_unstable_by_key(|x| x.address); - (s.index().0, mapping_symbols) + (s.index().0 - 1, mapping_symbols) }) .collect() } - fn endian(&self) -> unarm::Endian { - match self.endianness { - object::Endianness::Little => unarm::Endian::Little, - object::Endianness::Big => unarm::Endian::Big, - } - } - fn parse_flags(&self, diff_config: &DiffObjConfig) -> unarm::ParseFlags { unarm::ParseFlags { ual: diff_config.arm_unified_syntax, @@ -130,6 +123,31 @@ impl ArchArm { code: &[u8], diff_config: &DiffObjConfig, ) -> Result<(unarm::Ins, unarm::ParsedIns)> { + if ins_ref.opcode == thumb::Opcode::BlH as u16 && ins_ref.size == 4 { + // Special case: combined thumb BL instruction + let parse_flags = self.parse_flags(diff_config); + let first_ins = thumb::Ins { + code: match self.endianness { + object::Endianness::Little => u16::from_le_bytes([code[0], code[1]]), + object::Endianness::Big => u16::from_be_bytes([code[0], code[1]]), + } as u32, + op: thumb::Opcode::BlH, + }; + let second_ins = thumb::Ins::new( + match self.endianness { + object::Endianness::Little => u16::from_le_bytes([code[2], code[3]]), + object::Endianness::Big => u16::from_be_bytes([code[2], code[3]]), + } as u32, + &parse_flags, + ); + let first_parsed = first_ins.parse(&parse_flags); + let second_parsed = second_ins.parse(&parse_flags); + return Ok(( + unarm::Ins::Thumb(first_ins), + first_parsed.combine_thumb_bl(&second_parsed), + )); + } + let code = match (self.endianness, ins_ref.size) { (object::Endianness::Little, 2) => u16::from_le_bytes([code[0], code[1]]) as u32, (object::Endianness::Little, 4) => { @@ -153,11 +171,7 @@ impl ArchArm { } else { let ins = thumb::Ins { code, op: thumb::Opcode::from(ins_ref.opcode as u8) }; let parsed = ins.parse(&self.parse_flags(diff_config)); - if ins.is_half_bl() { - todo!("Combine thumb BL instructions"); - } else { - (unarm::Ins::Thumb(ins), parsed) - } + (unarm::Ins::Thumb(ins), parsed) }; Ok((ins, parsed_ins)) } @@ -185,60 +199,127 @@ impl Arch for ArchArm { let first_mapping_idx = mapping_symbols .binary_search_by_key(&start_addr, |x| x.address) .unwrap_or_else(|idx| idx - 1); - let first_mapping = mapping_symbols[first_mapping_idx].mapping; + let mut mode = mapping_symbols[first_mapping_idx].mapping; - let mut mappings_iter = - mapping_symbols.iter().skip(first_mapping_idx + 1).take_while(|x| x.address < end_addr); + let mut mappings_iter = mapping_symbols + .iter() + .copied() + .skip(first_mapping_idx + 1) + .take_while(|x| x.address < end_addr); let mut next_mapping = mappings_iter.next(); - let ins_count = code.len() / first_mapping.instruction_size(start_addr); + let ins_count = code.len() / mode.instruction_size(start_addr); let mut ops = Vec::::with_capacity(ins_count); - let endian = self.endian(); let parse_flags = self.parse_flags(diff_config); - let mut parser = unarm::Parser::new(first_mapping, start_addr, endian, parse_flags, code); - while let Some((address, ins, _parsed_ins)) = parser.next() { - let size = parser.mode.instruction_size(address); - if let Some(next) = next_mapping { - let next_address = parser.address; - if next_address >= next.address { - // Change mapping - parser.mode = next.mapping; - next_mapping = mappings_iter.next(); - } + let mut address = start_addr; + while address < end_addr { + while let Some(next) = next_mapping.take_if(|x| address >= x.address) { + // Change mapping + mode = next.mapping; + next_mapping = mappings_iter.next(); } - let (opcode, branch_dest) = match ins { - unarm::Ins::Arm(x) => { - let opcode = x.op as u16 | (1 << 15); - let branch_dest = match x.op { + + let mut ins_size = mode.instruction_size(address); + let data = &code[(address - start_addr) as usize..]; + if data.len() < ins_size { + // Push the remainder as data + ops.push(ScannedInstruction { + ins_ref: InstructionRef { + address: address as u64, + size: data.len() as u8, + opcode: u16::MAX, + }, + branch_dest: None, + }); + break; + } + let code = match (self.endianness, ins_size) { + (object::Endianness::Little, 2) => u16::from_le_bytes([data[0], data[1]]) as u32, + (object::Endianness::Little, 4) => { + u32::from_le_bytes([data[0], data[1], data[2], data[3]]) + } + (object::Endianness::Big, 2) => u16::from_be_bytes([data[0], data[1]]) as u32, + (object::Endianness::Big, 4) => { + u32::from_be_bytes([data[0], data[1], data[2], data[3]]) + } + _ => { + // Invalid instruction size + ops.push(ScannedInstruction { + ins_ref: InstructionRef { + address: address as u64, + size: ins_size as u8, + opcode: u16::MAX, + }, + branch_dest: None, + }); + address += ins_size as u32; + continue; + } + }; + + let (opcode, branch_dest) = match mode { + unarm::ParseMode::Arm => { + let ins = arm::Ins::new(code, &parse_flags); + let opcode = ins.op as u16 | (1 << 15); + let branch_dest = match ins.op { arm::Opcode::B | arm::Opcode::Bl => { - address.checked_add_signed(x.field_branch_offset()) + address.checked_add_signed(ins.field_branch_offset()) } - arm::Opcode::BlxI => address.checked_add_signed(x.field_blx_offset()), + arm::Opcode::BlxI => address.checked_add_signed(ins.field_blx_offset()), _ => None, }; (opcode, branch_dest) } - unarm::Ins::Thumb(x) => { - let opcode = x.op as u16; - let branch_dest = match x.op { + unarm::ParseMode::Thumb => { + let ins = thumb::Ins::new(code, &parse_flags); + let opcode = ins.op as u16; + let branch_dest = match ins.op { thumb::Opcode::B | thumb::Opcode::Bl => { - address.checked_add_signed(x.field_branch_offset_8()) + address.checked_add_signed(ins.field_branch_offset_8()) + } + thumb::Opcode::BlH if data.len() >= 4 => { + // Combine BL instructions + let second_ins = thumb::Ins::new( + match self.endianness { + object::Endianness::Little => { + u16::from_le_bytes([data[2], data[3]]) as u32 + } + object::Endianness::Big => { + u16::from_be_bytes([data[2], data[3]]) as u32 + } + }, + &parse_flags, + ); + if let Some(low) = match second_ins.op { + thumb::Opcode::Bl => Some(second_ins.field_low_branch_offset_11()), + thumb::Opcode::BlxI => Some(second_ins.field_low_blx_offset_11()), + _ => None, + } { + ins_size = 4; + address.checked_add_signed( + (ins.field_high_branch_offset_11() + (low as i32)) << 9 >> 9, + ) + } else { + None + } } thumb::Opcode::BLong => { - address.checked_add_signed(x.field_branch_offset_11()) + address.checked_add_signed(ins.field_branch_offset_11()) } _ => None, }; (opcode, branch_dest) } - unarm::Ins::Data => (u16::MAX, None), + unarm::ParseMode::Data => (u16::MAX, None), }; + ops.push(ScannedInstruction { - ins_ref: InstructionRef { address: address as u64, size: size as u8, opcode }, + ins_ref: InstructionRef { address: address as u64, size: ins_size as u8, opcode }, branch_dest: branch_dest.map(|x| x as u64), }); + address += ins_size as u32; } Ok(ops) @@ -391,7 +472,7 @@ fn push_args( let reloc_arg = find_reloc_arg(parsed_ins, relocation); let mut writeback = false; let mut deref = false; - for (i, arg) in parsed_ins.args_iter().enumerate() { + for (i, &arg) in parsed_ins.args_iter().enumerate() { // Emit punctuation before separator if deref { match arg { @@ -463,19 +544,19 @@ fn push_args( | args::Argument::CoOpcode(value) | args::Argument::SatImm(value) => { arg_cb(InstructionPart::basic("#"))?; - arg_cb(InstructionPart::unsigned(*value))?; + arg_cb(InstructionPart::unsigned(value))?; } args::Argument::SImm(value) | args::Argument::OffsetImm(args::OffsetImm { post_indexed: _, value }) => { arg_cb(InstructionPart::basic("#"))?; - arg_cb(InstructionPart::signed(*value))?; + arg_cb(InstructionPart::signed(value))?; } args::Argument::BranchDest(value) => { - arg_cb(InstructionPart::branch_dest(cur_addr.wrapping_add_signed(*value)))?; + arg_cb(InstructionPart::branch_dest(cur_addr.wrapping_add_signed(value)))?; } args::Argument::CoOption(value) => { arg_cb(InstructionPart::basic("{"))?; - arg_cb(InstructionPart::unsigned(*value))?; + arg_cb(InstructionPart::unsigned(value))?; arg_cb(InstructionPart::basic("}"))?; } args::Argument::CoprocNum(value) => { diff --git a/objdiff-core/tests/arch_arm.rs b/objdiff-core/tests/arch_arm.rs index 461e951..b742dec 100644 --- a/objdiff-core/tests/arch_arm.rs +++ b/objdiff-core/tests/arch_arm.rs @@ -15,3 +15,20 @@ fn read_arm() { let output = common::display_diff(&obj, &diff, symbol_idx, &diff_config); insta::assert_snapshot!(output); } + +#[test] +#[cfg(feature = "arm")] +fn read_thumb() { + let diff_config = diff::DiffObjConfig { mips_register_prefix: true, ..Default::default() }; + let obj = obj::read::parse(include_object!("data/arm/thumb.o"), &diff_config).unwrap(); + insta::assert_debug_snapshot!(obj); + let symbol_idx = obj + .symbols + .iter() + .position(|s| s.name == "THUMB_BRANCH_ServerDisplay_UncategorizedMove") + .unwrap(); + let diff = diff::code::no_diff_code(&obj, symbol_idx, &diff_config).unwrap(); + insta::assert_debug_snapshot!(diff.instruction_rows); + let output = common::display_diff(&obj, &diff, symbol_idx, &diff_config); + insta::assert_snapshot!(output); +} diff --git a/objdiff-core/tests/data/arm/thumb.o b/objdiff-core/tests/data/arm/thumb.o new file mode 100644 index 0000000000000000000000000000000000000000..f8f17d738449dc4c30ef0c4024c5c3dea557a300 GIT binary patch literal 32576 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 Yq)^YMZ4hYtHenCl4;kfQ%R~14528GpFaQ7m literal 0 HcmV?d00001 diff --git a/objdiff-core/tests/snapshots/arch_arm__read_arm-2.snap b/objdiff-core/tests/snapshots/arch_arm__read_arm-2.snap index 843f5e7..eb6020a 100644 --- a/objdiff-core/tests/snapshots/arch_arm__read_arm-2.snap +++ b/objdiff-core/tests/snapshots/arch_arm__read_arm-2.snap @@ -1660,7 +1660,7 @@ expression: diff.instruction_rows InstructionRef { address: 460, size: 4, - opcode: 32771, + opcode: 65535, }, ), kind: None, @@ -1673,7 +1673,7 @@ expression: diff.instruction_rows InstructionRef { address: 464, size: 4, - opcode: 32771, + opcode: 65535, }, ), kind: None, @@ -1693,7 +1693,7 @@ expression: diff.instruction_rows InstructionRef { address: 468, size: 4, - opcode: 32771, + opcode: 65535, }, ), kind: None, diff --git a/objdiff-core/tests/snapshots/arch_arm__read_arm-3.snap b/objdiff-core/tests/snapshots/arch_arm__read_arm-3.snap index 17f9150..05d05cd 100644 --- a/objdiff-core/tests/snapshots/arch_arm__read_arm-3.snap +++ b/objdiff-core/tests/snapshots/arch_arm__read_arm-3.snap @@ -107,6 +107,6 @@ expression: output [(Address(408), Normal, 5), (Basic(" ~> "), Rotating(16), 0), (Opcode("mov", 32818), Normal, 10), (Argument(Opaque("r0")), Normal, 0), (Basic(", "), Normal, 0), (Basic("#"), Normal, 0), (Argument(Unsigned(0)), Normal, 0), (Eol, Normal, 0)] [(Address(412), Normal, 5), (Spacing(4), Normal, 0), (Opcode("strb", 32899), Normal, 10), (Argument(Opaque("r0")), Normal, 0), (Basic(", "), Normal, 0), (Basic("["), Normal, 0), (Argument(Opaque("r5")), Normal, 0), (Basic(", "), Normal, 0), (Basic("#"), Normal, 0), (Argument(Signed(38)), Normal, 0), (Basic("]"), Normal, 0), (Eol, Normal, 0)] [(Address(416), Normal, 5), (Spacing(4), Normal, 0), (Opcode("ldmia", 32793), Normal, 10), (Argument(Opaque("sp")), Normal, 0), (Argument(Opaque("!")), Normal, 0), (Basic(", "), Normal, 0), (Basic("{"), Normal, 0), (Argument(Opaque("r4")), Normal, 0), (Basic(", "), Normal, 0), (Argument(Opaque("r5")), Normal, 0), (Basic(", "), Normal, 0), (Argument(Opaque("r6")), Normal, 0), (Basic(", "), Normal, 0), (Argument(Opaque("pc")), Normal, 0), (Basic("}"), Normal, 0), (Eol, Normal, 0)] -[(Address(420), Normal, 5), (Spacing(4), Normal, 0), (Opcode("andeq", 32771), Normal, 10), (Argument(Opaque("r0")), Normal, 0), (Basic(", "), Normal, 0), (Argument(Opaque("r0")), Normal, 0), (Basic(", "), Normal, 0), (Argument(Opaque("r0")), Normal, 0), (Basic(" <"), Normal, 0), (Symbol(Symbol { name: "data_027e103c", demangled_name: None, address: 0, size: 0, kind: Unknown, section: None, flags: FlagSet(Global | Weak), align: None, virtual_address: None }), Bright, 0), (Basic(">"), Normal, 0), (Eol, Normal, 0)] -[(Address(424), Normal, 5), (Basic(" ~> "), Rotating(8), 0), (Opcode("andeq", 32771), Normal, 10), (Argument(Opaque("r0")), Normal, 0), (Basic(", "), Normal, 0), (Argument(Opaque("r0")), Normal, 0), (Basic(", "), Normal, 0), (Argument(Opaque("r0")), Normal, 0), (Basic(" <"), Normal, 0), (Symbol(Symbol { name: "data_027e1098", demangled_name: None, address: 0, size: 0, kind: Unknown, section: None, flags: FlagSet(Global | Weak), align: None, virtual_address: None }), Bright, 0), (Basic(">"), Normal, 0), (Eol, Normal, 0)] -[(Address(428), Normal, 5), (Spacing(4), Normal, 0), (Opcode("andeq", 32771), Normal, 10), (Argument(Opaque("r0")), Normal, 0), (Basic(", "), Normal, 0), (Argument(Opaque("r0")), Normal, 0), (Basic(", "), Normal, 0), (Argument(Opaque("r0")), Normal, 0), (Basic(" <"), Normal, 0), (Symbol(Symbol { name: "gPlayerControl", demangled_name: None, address: 0, size: 0, kind: Unknown, section: None, flags: FlagSet(Global | Weak), align: None, virtual_address: None }), Bright, 0), (Basic(">"), Normal, 0), (Eol, Normal, 0)] +[(Address(420), Normal, 5), (Spacing(4), Normal, 0), (Opcode(".word", 65535), Normal, 10), (Symbol(Symbol { name: "data_027e103c", demangled_name: None, address: 0, size: 0, kind: Unknown, section: None, flags: FlagSet(Global | Weak), align: None, virtual_address: None }), Bright, 0), (Eol, Normal, 0)] +[(Address(424), Normal, 5), (Basic(" ~> "), Rotating(8), 0), (Opcode(".word", 65535), Normal, 10), (Symbol(Symbol { name: "data_027e1098", demangled_name: None, address: 0, size: 0, kind: Unknown, section: None, flags: FlagSet(Global | Weak), align: None, virtual_address: None }), Bright, 0), (Eol, Normal, 0)] +[(Address(428), Normal, 5), (Spacing(4), Normal, 0), (Opcode(".word", 65535), Normal, 10), (Symbol(Symbol { name: "gPlayerControl", demangled_name: None, address: 0, size: 0, kind: Unknown, section: None, flags: FlagSet(Global | Weak), align: None, virtual_address: None }), Bright, 0), (Eol, Normal, 0)] diff --git a/objdiff-core/tests/snapshots/arch_arm__read_arm.snap b/objdiff-core/tests/snapshots/arch_arm__read_arm.snap index 5b6fc82..b733dc7 100644 --- a/objdiff-core/tests/snapshots/arch_arm__read_arm.snap +++ b/objdiff-core/tests/snapshots/arch_arm__read_arm.snap @@ -5,7 +5,7 @@ expression: obj Object { arch: ArchArm { disasm_modes: { - 1: [ + 0: [ DisasmMode { address: 0, mapping: Thumb, diff --git a/objdiff-core/tests/snapshots/arch_arm__read_thumb-2.snap b/objdiff-core/tests/snapshots/arch_arm__read_thumb-2.snap new file mode 100644 index 0000000..57e3894 --- /dev/null +++ b/objdiff-core/tests/snapshots/arch_arm__read_thumb-2.snap @@ -0,0 +1,1480 @@ +--- +source: objdiff-core/tests/arch_arm.rs +expression: diff.instruction_rows +--- +[ + InstructionDiffRow { + ins_ref: Some( + InstructionRef { + address: 0, + size: 2, + opcode: 56, + }, + ), + kind: None, + branch_from: None, + branch_to: None, + arg_diff: [], + }, + InstructionDiffRow { + ins_ref: Some( + InstructionRef { + address: 2, + size: 2, + opcode: 74, + }, + ), + kind: None, + branch_from: None, + branch_to: None, + arg_diff: [], + }, + InstructionDiffRow { + ins_ref: Some( + InstructionRef { + address: 4, + size: 2, + opcode: 47, + }, + ), + kind: None, + branch_from: None, + branch_to: None, + arg_diff: [], + }, + InstructionDiffRow { + ins_ref: Some( + InstructionRef { + address: 6, + size: 2, + opcode: 47, + }, + ), + kind: None, + branch_from: None, + branch_to: None, + arg_diff: [], + }, + InstructionDiffRow { + ins_ref: Some( + InstructionRef { + address: 8, + size: 2, + opcode: 47, + }, + ), + kind: None, + branch_from: None, + branch_to: None, + arg_diff: [], + }, + InstructionDiffRow { + ins_ref: Some( + InstructionRef { + address: 10, + size: 2, + opcode: 47, + }, + ), + kind: None, + branch_from: None, + branch_to: None, + arg_diff: [], + }, + InstructionDiffRow { + ins_ref: Some( + InstructionRef { + address: 12, + size: 2, + opcode: 66, + }, + ), + kind: None, + branch_from: None, + branch_to: None, + arg_diff: [], + }, + InstructionDiffRow { + ins_ref: Some( + InstructionRef { + address: 14, + size: 4, + opcode: 19, + }, + ), + kind: None, + branch_from: None, + branch_to: None, + arg_diff: [], + }, + InstructionDiffRow { + ins_ref: Some( + InstructionRef { + address: 18, + size: 2, + opcode: 25, + }, + ), + kind: None, + branch_from: None, + branch_to: None, + arg_diff: [], + }, + InstructionDiffRow { + ins_ref: Some( + InstructionRef { + address: 20, + size: 2, + opcode: 15, + }, + ), + kind: None, + branch_from: None, + branch_to: Some( + InstructionBranchTo { + ins_idx: 97, + branch_idx: 0, + }, + ), + arg_diff: [], + }, + InstructionDiffRow { + ins_ref: Some( + InstructionRef { + address: 22, + size: 2, + opcode: 38, + }, + ), + kind: None, + branch_from: None, + branch_to: None, + arg_diff: [], + }, + InstructionDiffRow { + ins_ref: Some( + InstructionRef { + address: 24, + size: 2, + opcode: 25, + }, + ), + kind: None, + branch_from: None, + branch_to: None, + arg_diff: [], + }, + InstructionDiffRow { + ins_ref: Some( + InstructionRef { + address: 26, + size: 2, + opcode: 15, + }, + ), + kind: None, + branch_from: None, + branch_to: Some( + InstructionBranchTo { + ins_idx: 22, + branch_idx: 1, + }, + ), + arg_diff: [], + }, + InstructionDiffRow { + ins_ref: Some( + InstructionRef { + address: 28, + size: 2, + opcode: 34, + }, + ), + kind: None, + branch_from: None, + branch_to: None, + arg_diff: [], + }, + InstructionDiffRow { + ins_ref: Some( + InstructionRef { + address: 30, + size: 2, + opcode: 26, + }, + ), + kind: None, + branch_from: None, + branch_to: None, + arg_diff: [], + }, + InstructionDiffRow { + ins_ref: Some( + InstructionRef { + address: 32, + size: 2, + opcode: 15, + }, + ), + kind: None, + branch_from: None, + branch_to: Some( + InstructionBranchTo { + ins_idx: 44, + branch_idx: 2, + }, + ), + arg_diff: [], + }, + InstructionDiffRow { + ins_ref: Some( + InstructionRef { + address: 34, + size: 2, + opcode: 35, + }, + ), + kind: None, + branch_from: None, + branch_to: None, + arg_diff: [], + }, + InstructionDiffRow { + ins_ref: Some( + InstructionRef { + address: 36, + size: 2, + opcode: 47, + }, + ), + kind: None, + branch_from: None, + branch_to: None, + arg_diff: [], + }, + InstructionDiffRow { + ins_ref: Some( + InstructionRef { + address: 38, + size: 2, + opcode: 47, + }, + ), + kind: None, + branch_from: None, + branch_to: None, + arg_diff: [], + }, + InstructionDiffRow { + ins_ref: Some( + InstructionRef { + address: 40, + size: 4, + opcode: 19, + }, + ), + kind: None, + branch_from: None, + branch_to: None, + arg_diff: [], + }, + InstructionDiffRow { + ins_ref: Some( + InstructionRef { + address: 44, + size: 2, + opcode: 7, + }, + ), + kind: None, + branch_from: None, + branch_to: None, + arg_diff: [], + }, + InstructionDiffRow { + ins_ref: Some( + InstructionRef { + address: 46, + size: 2, + opcode: 55, + }, + ), + kind: None, + branch_from: None, + branch_to: None, + arg_diff: [], + }, + InstructionDiffRow { + ins_ref: Some( + InstructionRef { + address: 48, + size: 2, + opcode: 47, + }, + ), + kind: None, + branch_from: Some( + InstructionBranchFrom { + ins_idx: [ + 12, + ], + branch_idx: 1, + }, + ), + branch_to: None, + arg_diff: [], + }, + InstructionDiffRow { + ins_ref: Some( + InstructionRef { + address: 50, + size: 2, + opcode: 47, + }, + ), + kind: None, + branch_from: None, + branch_to: None, + arg_diff: [], + }, + InstructionDiffRow { + ins_ref: Some( + InstructionRef { + address: 52, + size: 4, + opcode: 19, + }, + ), + kind: None, + branch_from: None, + branch_to: None, + arg_diff: [], + }, + InstructionDiffRow { + ins_ref: Some( + InstructionRef { + address: 56, + size: 2, + opcode: 25, + }, + ), + kind: None, + branch_from: None, + branch_to: None, + arg_diff: [], + }, + InstructionDiffRow { + ins_ref: Some( + InstructionRef { + address: 58, + size: 2, + opcode: 15, + }, + ), + kind: None, + branch_from: None, + branch_to: Some( + InstructionBranchTo { + ins_idx: 97, + branch_idx: 0, + }, + ), + arg_diff: [], + }, + InstructionDiffRow { + ins_ref: Some( + InstructionRef { + address: 60, + size: 2, + opcode: 34, + }, + ), + kind: None, + branch_from: None, + branch_to: None, + arg_diff: [], + }, + InstructionDiffRow { + ins_ref: Some( + InstructionRef { + address: 62, + size: 2, + opcode: 33, + }, + ), + kind: None, + branch_from: None, + branch_to: None, + arg_diff: [], + }, + InstructionDiffRow { + ins_ref: Some( + InstructionRef { + address: 64, + size: 2, + opcode: 36, + }, + ), + kind: None, + branch_from: None, + branch_to: None, + arg_diff: [], + }, + InstructionDiffRow { + ins_ref: Some( + InstructionRef { + address: 66, + size: 2, + opcode: 42, + }, + ), + kind: None, + branch_from: None, + branch_to: None, + arg_diff: [], + }, + InstructionDiffRow { + ins_ref: Some( + InstructionRef { + address: 68, + size: 2, + opcode: 44, + }, + ), + kind: None, + branch_from: None, + branch_to: None, + arg_diff: [], + }, + InstructionDiffRow { + ins_ref: Some( + InstructionRef { + address: 70, + size: 2, + opcode: 15, + }, + ), + kind: None, + branch_from: None, + branch_to: Some( + InstructionBranchTo { + ins_idx: 97, + branch_idx: 0, + }, + ), + arg_diff: [], + }, + InstructionDiffRow { + ins_ref: Some( + InstructionRef { + address: 72, + size: 2, + opcode: 46, + }, + ), + kind: None, + branch_from: None, + branch_to: None, + arg_diff: [], + }, + InstructionDiffRow { + ins_ref: Some( + InstructionRef { + address: 74, + size: 2, + opcode: 17, + }, + ), + kind: None, + branch_from: None, + branch_to: None, + arg_diff: [], + }, + InstructionDiffRow { + ins_ref: Some( + InstructionRef { + address: 76, + size: 2, + opcode: 46, + }, + ), + kind: None, + branch_from: None, + branch_to: None, + arg_diff: [], + }, + InstructionDiffRow { + ins_ref: Some( + InstructionRef { + address: 78, + size: 2, + opcode: 54, + }, + ), + kind: None, + branch_from: None, + branch_to: None, + arg_diff: [], + }, + InstructionDiffRow { + ins_ref: Some( + InstructionRef { + address: 80, + size: 2, + opcode: 67, + }, + ), + kind: None, + branch_from: None, + branch_to: None, + arg_diff: [], + }, + InstructionDiffRow { + ins_ref: Some( + InstructionRef { + address: 82, + size: 2, + opcode: 36, + }, + ), + kind: None, + branch_from: None, + branch_to: None, + arg_diff: [], + }, + InstructionDiffRow { + ins_ref: Some( + InstructionRef { + address: 84, + size: 2, + opcode: 46, + }, + ), + kind: None, + branch_from: None, + branch_to: None, + arg_diff: [], + }, + InstructionDiffRow { + ins_ref: Some( + InstructionRef { + address: 86, + size: 2, + opcode: 7, + }, + ), + kind: None, + branch_from: None, + branch_to: None, + arg_diff: [], + }, + InstructionDiffRow { + ins_ref: Some( + InstructionRef { + address: 88, + size: 2, + opcode: 54, + }, + ), + kind: None, + branch_from: None, + branch_to: None, + arg_diff: [], + }, + InstructionDiffRow { + ins_ref: Some( + InstructionRef { + address: 90, + size: 2, + opcode: 67, + }, + ), + kind: None, + branch_from: None, + branch_to: None, + arg_diff: [], + }, + InstructionDiffRow { + ins_ref: Some( + InstructionRef { + address: 92, + size: 2, + opcode: 55, + }, + ), + kind: None, + branch_from: None, + branch_to: None, + arg_diff: [], + }, + InstructionDiffRow { + ins_ref: Some( + InstructionRef { + address: 94, + size: 2, + opcode: 34, + }, + ), + kind: None, + branch_from: Some( + InstructionBranchFrom { + ins_idx: [ + 15, + ], + branch_idx: 2, + }, + ), + branch_to: None, + arg_diff: [], + }, + InstructionDiffRow { + ins_ref: Some( + InstructionRef { + address: 96, + size: 2, + opcode: 34, + }, + ), + kind: None, + branch_from: None, + branch_to: None, + arg_diff: [], + }, + InstructionDiffRow { + ins_ref: Some( + InstructionRef { + address: 98, + size: 2, + opcode: 4, + }, + ), + kind: None, + branch_from: None, + branch_to: None, + arg_diff: [], + }, + InstructionDiffRow { + ins_ref: Some( + InstructionRef { + address: 100, + size: 4, + opcode: 19, + }, + ), + kind: None, + branch_from: None, + branch_to: None, + arg_diff: [], + }, + InstructionDiffRow { + ins_ref: Some( + InstructionRef { + address: 104, + size: 2, + opcode: 66, + }, + ), + kind: None, + branch_from: None, + branch_to: None, + arg_diff: [], + }, + InstructionDiffRow { + ins_ref: Some( + InstructionRef { + address: 106, + size: 2, + opcode: 47, + }, + ), + kind: None, + branch_from: None, + branch_to: None, + arg_diff: [], + }, + InstructionDiffRow { + ins_ref: Some( + InstructionRef { + address: 108, + size: 4, + opcode: 19, + }, + ), + kind: None, + branch_from: None, + branch_to: None, + arg_diff: [], + }, + InstructionDiffRow { + ins_ref: Some( + InstructionRef { + address: 112, + size: 2, + opcode: 47, + }, + ), + kind: None, + branch_from: None, + branch_to: None, + arg_diff: [], + }, + InstructionDiffRow { + ins_ref: Some( + InstructionRef { + address: 114, + size: 2, + opcode: 6, + }, + ), + kind: None, + branch_from: None, + branch_to: None, + arg_diff: [], + }, + InstructionDiffRow { + ins_ref: Some( + InstructionRef { + address: 116, + size: 2, + opcode: 66, + }, + ), + kind: None, + branch_from: None, + branch_to: None, + arg_diff: [], + }, + InstructionDiffRow { + ins_ref: Some( + InstructionRef { + address: 118, + size: 2, + opcode: 35, + }, + ), + kind: None, + branch_from: None, + branch_to: None, + arg_diff: [], + }, + InstructionDiffRow { + ins_ref: Some( + InstructionRef { + address: 120, + size: 2, + opcode: 47, + }, + ), + kind: None, + branch_from: None, + branch_to: None, + arg_diff: [], + }, + InstructionDiffRow { + ins_ref: Some( + InstructionRef { + address: 122, + size: 2, + opcode: 47, + }, + ), + kind: None, + branch_from: None, + branch_to: None, + arg_diff: [], + }, + InstructionDiffRow { + ins_ref: Some( + InstructionRef { + address: 124, + size: 2, + opcode: 47, + }, + ), + kind: None, + branch_from: None, + branch_to: None, + arg_diff: [], + }, + InstructionDiffRow { + ins_ref: Some( + InstructionRef { + address: 126, + size: 4, + opcode: 19, + }, + ), + kind: None, + branch_from: None, + branch_to: None, + arg_diff: [], + }, + InstructionDiffRow { + ins_ref: Some( + InstructionRef { + address: 130, + size: 2, + opcode: 25, + }, + ), + kind: None, + branch_from: None, + branch_to: None, + arg_diff: [], + }, + InstructionDiffRow { + ins_ref: Some( + InstructionRef { + address: 132, + size: 2, + opcode: 15, + }, + ), + kind: None, + branch_from: None, + branch_to: Some( + InstructionBranchTo { + ins_idx: 77, + branch_idx: 3, + }, + ), + arg_diff: [], + }, + InstructionDiffRow { + ins_ref: Some( + InstructionRef { + address: 134, + size: 2, + opcode: 47, + }, + ), + kind: None, + branch_from: None, + branch_to: None, + arg_diff: [], + }, + InstructionDiffRow { + ins_ref: Some( + InstructionRef { + address: 136, + size: 4, + opcode: 19, + }, + ), + kind: None, + branch_from: None, + branch_to: None, + arg_diff: [], + }, + InstructionDiffRow { + ins_ref: Some( + InstructionRef { + address: 140, + size: 2, + opcode: 47, + }, + ), + kind: None, + branch_from: None, + branch_to: None, + arg_diff: [], + }, + InstructionDiffRow { + ins_ref: Some( + InstructionRef { + address: 142, + size: 2, + opcode: 25, + }, + ), + kind: None, + branch_from: None, + branch_to: None, + arg_diff: [], + }, + InstructionDiffRow { + ins_ref: Some( + InstructionRef { + address: 144, + size: 2, + opcode: 15, + }, + ), + kind: None, + branch_from: None, + branch_to: Some( + InstructionBranchTo { + ins_idx: 77, + branch_idx: 3, + }, + ), + arg_diff: [], + }, + InstructionDiffRow { + ins_ref: Some( + InstructionRef { + address: 146, + size: 2, + opcode: 34, + }, + ), + kind: None, + branch_from: None, + branch_to: None, + arg_diff: [], + }, + InstructionDiffRow { + ins_ref: Some( + InstructionRef { + address: 148, + size: 2, + opcode: 33, + }, + ), + kind: None, + branch_from: None, + branch_to: None, + arg_diff: [], + }, + InstructionDiffRow { + ins_ref: Some( + InstructionRef { + address: 150, + size: 2, + opcode: 36, + }, + ), + kind: None, + branch_from: None, + branch_to: None, + arg_diff: [], + }, + InstructionDiffRow { + ins_ref: Some( + InstructionRef { + address: 152, + size: 2, + opcode: 42, + }, + ), + kind: None, + branch_from: None, + branch_to: None, + arg_diff: [], + }, + InstructionDiffRow { + ins_ref: Some( + InstructionRef { + address: 154, + size: 2, + opcode: 44, + }, + ), + kind: None, + branch_from: None, + branch_to: None, + arg_diff: [], + }, + InstructionDiffRow { + ins_ref: Some( + InstructionRef { + address: 156, + size: 2, + opcode: 15, + }, + ), + kind: None, + branch_from: None, + branch_to: Some( + InstructionBranchTo { + ins_idx: 77, + branch_idx: 3, + }, + ), + arg_diff: [], + }, + InstructionDiffRow { + ins_ref: Some( + InstructionRef { + address: 158, + size: 2, + opcode: 46, + }, + ), + kind: None, + branch_from: None, + branch_to: None, + arg_diff: [], + }, + InstructionDiffRow { + ins_ref: Some( + InstructionRef { + address: 160, + size: 2, + opcode: 17, + }, + ), + kind: None, + branch_from: None, + branch_to: None, + arg_diff: [], + }, + InstructionDiffRow { + ins_ref: Some( + InstructionRef { + address: 162, + size: 2, + opcode: 46, + }, + ), + kind: None, + branch_from: None, + branch_to: None, + arg_diff: [], + }, + InstructionDiffRow { + ins_ref: Some( + InstructionRef { + address: 164, + size: 2, + opcode: 54, + }, + ), + kind: None, + branch_from: None, + branch_to: None, + arg_diff: [], + }, + InstructionDiffRow { + ins_ref: Some( + InstructionRef { + address: 166, + size: 2, + opcode: 67, + }, + ), + kind: None, + branch_from: None, + branch_to: None, + arg_diff: [], + }, + InstructionDiffRow { + ins_ref: Some( + InstructionRef { + address: 168, + size: 2, + opcode: 25, + }, + ), + kind: None, + branch_from: Some( + InstructionBranchFrom { + ins_idx: [ + 60, + 65, + 71, + ], + branch_idx: 3, + }, + ), + branch_to: None, + arg_diff: [], + }, + InstructionDiffRow { + ins_ref: Some( + InstructionRef { + address: 170, + size: 2, + opcode: 15, + }, + ), + kind: None, + branch_from: None, + branch_to: Some( + InstructionBranchTo { + ins_idx: 92, + branch_idx: 4, + }, + ), + arg_diff: [], + }, + InstructionDiffRow { + ins_ref: Some( + InstructionRef { + address: 172, + size: 2, + opcode: 35, + }, + ), + kind: None, + branch_from: None, + branch_to: None, + arg_diff: [], + }, + InstructionDiffRow { + ins_ref: Some( + InstructionRef { + address: 174, + size: 2, + opcode: 25, + }, + ), + kind: None, + branch_from: None, + branch_to: None, + arg_diff: [], + }, + InstructionDiffRow { + ins_ref: Some( + InstructionRef { + address: 176, + size: 2, + opcode: 15, + }, + ), + kind: None, + branch_from: None, + branch_to: Some( + InstructionBranchTo { + ins_idx: 92, + branch_idx: 4, + }, + ), + arg_diff: [], + }, + InstructionDiffRow { + ins_ref: Some( + InstructionRef { + address: 178, + size: 2, + opcode: 34, + }, + ), + kind: None, + branch_from: None, + branch_to: None, + arg_diff: [], + }, + InstructionDiffRow { + ins_ref: Some( + InstructionRef { + address: 180, + size: 2, + opcode: 37, + }, + ), + kind: None, + branch_from: None, + branch_to: None, + arg_diff: [], + }, + InstructionDiffRow { + ins_ref: Some( + InstructionRef { + address: 182, + size: 2, + opcode: 42, + }, + ), + kind: None, + branch_from: None, + branch_to: None, + arg_diff: [], + }, + InstructionDiffRow { + ins_ref: Some( + InstructionRef { + address: 184, + size: 2, + opcode: 44, + }, + ), + kind: None, + branch_from: None, + branch_to: None, + arg_diff: [], + }, + InstructionDiffRow { + ins_ref: Some( + InstructionRef { + address: 186, + size: 2, + opcode: 15, + }, + ), + kind: None, + branch_from: None, + branch_to: Some( + InstructionBranchTo { + ins_idx: 92, + branch_idx: 4, + }, + ), + arg_diff: [], + }, + InstructionDiffRow { + ins_ref: Some( + InstructionRef { + address: 188, + size: 2, + opcode: 32, + }, + ), + kind: None, + branch_from: None, + branch_to: None, + arg_diff: [], + }, + InstructionDiffRow { + ins_ref: Some( + InstructionRef { + address: 190, + size: 2, + opcode: 34, + }, + ), + kind: None, + branch_from: None, + branch_to: None, + arg_diff: [], + }, + InstructionDiffRow { + ins_ref: Some( + InstructionRef { + address: 192, + size: 2, + opcode: 46, + }, + ), + kind: None, + branch_from: None, + branch_to: None, + arg_diff: [], + }, + InstructionDiffRow { + ins_ref: Some( + InstructionRef { + address: 194, + size: 2, + opcode: 46, + }, + ), + kind: None, + branch_from: None, + branch_to: None, + arg_diff: [], + }, + InstructionDiffRow { + ins_ref: Some( + InstructionRef { + address: 196, + size: 4, + opcode: 19, + }, + ), + kind: None, + branch_from: None, + branch_to: None, + arg_diff: [], + }, + InstructionDiffRow { + ins_ref: Some( + InstructionRef { + address: 200, + size: 2, + opcode: 34, + }, + ), + kind: None, + branch_from: Some( + InstructionBranchFrom { + ins_idx: [ + 78, + 81, + 86, + ], + branch_idx: 4, + }, + ), + branch_to: None, + arg_diff: [], + }, + InstructionDiffRow { + ins_ref: Some( + InstructionRef { + address: 202, + size: 2, + opcode: 35, + }, + ), + kind: None, + branch_from: None, + branch_to: None, + arg_diff: [], + }, + InstructionDiffRow { + ins_ref: Some( + InstructionRef { + address: 204, + size: 2, + opcode: 34, + }, + ), + kind: None, + branch_from: None, + branch_to: None, + arg_diff: [], + }, + InstructionDiffRow { + ins_ref: Some( + InstructionRef { + address: 206, + size: 2, + opcode: 4, + }, + ), + kind: None, + branch_from: None, + branch_to: None, + arg_diff: [], + }, + InstructionDiffRow { + ins_ref: Some( + InstructionRef { + address: 208, + size: 4, + opcode: 19, + }, + ), + kind: None, + branch_from: None, + branch_to: None, + arg_diff: [], + }, + InstructionDiffRow { + ins_ref: Some( + InstructionRef { + address: 212, + size: 2, + opcode: 7, + }, + ), + kind: None, + branch_from: Some( + InstructionBranchFrom { + ins_idx: [ + 9, + 26, + 32, + ], + branch_idx: 0, + }, + ), + branch_to: None, + arg_diff: [], + }, + InstructionDiffRow { + ins_ref: Some( + InstructionRef { + address: 214, + size: 2, + opcode: 55, + }, + ), + kind: None, + branch_from: None, + branch_to: None, + arg_diff: [], + }, + InstructionDiffRow { + ins_ref: Some( + InstructionRef { + address: 216, + size: 4, + opcode: 65535, + }, + ), + kind: None, + branch_from: None, + branch_to: None, + arg_diff: [], + }, + InstructionDiffRow { + ins_ref: Some( + InstructionRef { + address: 220, + size: 4, + opcode: 65535, + }, + ), + kind: None, + branch_from: None, + branch_to: None, + arg_diff: [], + }, + InstructionDiffRow { + ins_ref: Some( + InstructionRef { + address: 224, + size: 4, + opcode: 65535, + }, + ), + kind: None, + branch_from: None, + branch_to: None, + arg_diff: [], + }, + InstructionDiffRow { + ins_ref: Some( + InstructionRef { + address: 228, + size: 4, + opcode: 65535, + }, + ), + kind: None, + branch_from: None, + branch_to: None, + arg_diff: [], + }, + InstructionDiffRow { + ins_ref: Some( + InstructionRef { + address: 232, + size: 4, + opcode: 65535, + }, + ), + kind: None, + branch_from: None, + branch_to: None, + arg_diff: [], + }, + InstructionDiffRow { + ins_ref: Some( + InstructionRef { + address: 236, + size: 4, + opcode: 65535, + }, + ), + kind: None, + branch_from: None, + branch_to: None, + arg_diff: [], + }, + InstructionDiffRow { + ins_ref: Some( + InstructionRef { + address: 240, + size: 4, + opcode: 65535, + }, + ), + kind: None, + branch_from: None, + branch_to: None, + arg_diff: [], + }, +] diff --git a/objdiff-core/tests/snapshots/arch_arm__read_thumb-3.snap b/objdiff-core/tests/snapshots/arch_arm__read_thumb-3.snap new file mode 100644 index 0000000..3ee50a8 --- /dev/null +++ b/objdiff-core/tests/snapshots/arch_arm__read_thumb-3.snap @@ -0,0 +1,110 @@ +--- +source: objdiff-core/tests/arch_arm.rs +expression: output +--- +[(Line(37), Dim, 5), (Address(0), Normal, 5), (Spacing(4), Normal, 0), (Opcode("push", 56), Normal, 10), (Basic("{"), Normal, 0), (Argument(Opaque("r3")), Normal, 0), (Basic(", "), Normal, 0), (Argument(Opaque("r4")), Normal, 0), (Basic(", "), Normal, 0), (Argument(Opaque("r5")), Normal, 0), (Basic(", "), Normal, 0), (Argument(Opaque("r6")), Normal, 0), (Basic(", "), Normal, 0), (Argument(Opaque("r7")), Normal, 0), (Basic(", "), Normal, 0), (Argument(Opaque("lr")), Normal, 0), (Basic("}"), Normal, 0), (Eol, Normal, 0)] +[(Line(37), Dim, 5), (Address(2), Normal, 5), (Spacing(4), Normal, 0), (Opcode("sub", 74), Normal, 10), (Argument(Opaque("sp")), Normal, 0), (Basic(", "), Normal, 0), (Argument(Opaque("sp")), Normal, 0), (Basic(", "), Normal, 0), (Basic("#"), Normal, 0), (Argument(Signed(16)), Normal, 0), (Eol, Normal, 0)] +[(Line(37), Dim, 5), (Address(4), Normal, 5), (Spacing(4), Normal, 0), (Opcode("mov", 47), Normal, 10), (Argument(Opaque("r5")), Normal, 0), (Basic(", "), Normal, 0), (Argument(Opaque("r0")), Normal, 0), (Eol, Normal, 0)] +[(Line(39), Dim, 5), (Address(6), Normal, 5), (Spacing(4), Normal, 0), (Opcode("mov", 47), Normal, 10), (Argument(Opaque("r0")), Normal, 0), (Basic(", "), Normal, 0), (Argument(Opaque("r3")), Normal, 0), (Eol, Normal, 0)] +[(Line(39), Dim, 5), (Address(8), Normal, 5), (Spacing(4), Normal, 0), (Opcode("mov", 47), Normal, 10), (Argument(Opaque("r4")), Normal, 0), (Basic(", "), Normal, 0), (Argument(Opaque("r1")), Normal, 0), (Eol, Normal, 0)] +[(Line(39), Dim, 5), (Address(10), Normal, 5), (Spacing(4), Normal, 0), (Opcode("mov", 47), Normal, 10), (Argument(Opaque("r6")), Normal, 0), (Basic(", "), Normal, 0), (Argument(Opaque("r2")), Normal, 0), (Eol, Normal, 0)] +[(Line(39), Dim, 5), (Address(12), Normal, 5), (Spacing(4), Normal, 0), (Opcode("str", 66), Normal, 10), (Argument(Opaque("r3")), Normal, 0), (Basic(", "), Normal, 0), (Basic("["), Normal, 0), (Argument(Opaque("sp")), Normal, 0), (Basic(", "), Normal, 0), (Basic("#"), Normal, 0), (Argument(Signed(4)), Normal, 0), (Basic("]"), Normal, 0), (Eol, Normal, 0)] +[(Line(39), Dim, 5), (Address(14), Normal, 5), (Spacing(4), Normal, 0), (Opcode("bl", 19), Normal, 10), (Symbol(Symbol { name: "PokeSet_IsRemovedAll", demangled_name: None, address: 0, size: 0, kind: Unknown, section: None, flags: FlagSet(Global), align: None, virtual_address: None }), Bright, 0), (Addend(-4), Bright, 0), (Eol, Normal, 0)] +[(Line(39), Dim, 5), (Address(18), Normal, 5), (Spacing(4), Normal, 0), (Opcode("cmp", 25), Normal, 10), (Argument(Opaque("r0")), Normal, 0), (Basic(", "), Normal, 0), (Basic("#"), Normal, 0), (Argument(Unsigned(0)), Normal, 0), (Eol, Normal, 0)] +[(Line(39), Dim, 5), (Address(20), Normal, 5), (Spacing(4), Normal, 0), (Opcode("bne", 15), Normal, 10), (BranchDest(212), Normal, 0), (Basic(" ~>"), Rotating(0), 0), (Eol, Normal, 0)] +[(Line(44), Dim, 5), (Address(22), Normal, 5), (Spacing(4), Normal, 0), (Opcode("ldrh", 38), Normal, 10), (Argument(Opaque("r1")), Normal, 0), (Basic(", "), Normal, 0), (Basic("["), Normal, 0), (Argument(Opaque("r4")), Normal, 0), (Basic(", "), Normal, 0), (Basic("#"), Normal, 0), (Argument(Signed(0)), Normal, 0), (Basic("]"), Normal, 0), (Eol, Normal, 0)] +[(Line(44), Dim, 5), (Address(24), Normal, 5), (Spacing(4), Normal, 0), (Opcode("cmp", 25), Normal, 10), (Argument(Opaque("r1")), Normal, 0), (Basic(", "), Normal, 0), (Basic("#"), Normal, 0), (Argument(Unsigned(164)), Normal, 0), (Eol, Normal, 0)] +[(Line(44), Dim, 5), (Address(26), Normal, 5), (Spacing(4), Normal, 0), (Opcode("beq", 15), Normal, 10), (BranchDest(48), Normal, 0), (Basic(" ~>"), Rotating(1), 0), (Eol, Normal, 0)] +[(Line(44), Dim, 5), (Address(28), Normal, 5), (Spacing(4), Normal, 0), (Opcode("ldr", 34), Normal, 10), (Argument(Opaque("r0")), Normal, 0), (Basic(", "), Normal, 0), (Basic("["), Normal, 0), (Argument(Opaque("pc")), Normal, 0), (Basic(", "), Normal, 0), (Basic("#"), Normal, 0), (Argument(Signed(184)), Normal, 0), (Basic("]"), Normal, 0), (Eol, Normal, 0)] +[(Line(44), Dim, 5), (Address(30), Normal, 5), (Spacing(4), Normal, 0), (Opcode("cmp", 26), Normal, 10), (Argument(Opaque("r1")), Normal, 0), (Basic(", "), Normal, 0), (Argument(Opaque("r0")), Normal, 0), (Eol, Normal, 0)] +[(Line(44), Dim, 5), (Address(32), Normal, 5), (Spacing(4), Normal, 0), (Opcode("bne", 15), Normal, 10), (BranchDest(94), Normal, 0), (Basic(" ~>"), Rotating(2), 0), (Eol, Normal, 0)] +[(Line(47), Dim, 5), (Address(34), Normal, 5), (Spacing(4), Normal, 0), (Opcode("ldr", 35), Normal, 10), (Argument(Opaque("r2")), Normal, 0), (Basic(", "), Normal, 0), (Basic("["), Normal, 0), (Argument(Opaque("sp")), Normal, 0), (Basic(", "), Normal, 0), (Basic("#"), Normal, 0), (Argument(Signed(4)), Normal, 0), (Basic("]"), Normal, 0), (Eol, Normal, 0)] +[(Line(47), Dim, 5), (Address(36), Normal, 5), (Spacing(4), Normal, 0), (Opcode("mov", 47), Normal, 10), (Argument(Opaque("r0")), Normal, 0), (Basic(", "), Normal, 0), (Argument(Opaque("r5")), Normal, 0), (Eol, Normal, 0)] +[(Line(47), Dim, 5), (Address(38), Normal, 5), (Spacing(4), Normal, 0), (Opcode("mov", 47), Normal, 10), (Argument(Opaque("r1")), Normal, 0), (Basic(", "), Normal, 0), (Argument(Opaque("r6")), Normal, 0), (Eol, Normal, 0)] +[(Line(47), Dim, 5), (Address(40), Normal, 5), (Spacing(4), Normal, 0), (Opcode("bl", 19), Normal, 10), (Symbol(Symbol { name: "ServerDisplay_SkillSwap", demangled_name: None, address: 0, size: 0, kind: Unknown, section: None, flags: FlagSet(Global), align: None, virtual_address: None }), Bright, 0), (Addend(-4), Bright, 0), (Eol, Normal, 0)] +[(Line(86), Dim, 5), (Address(44), Normal, 5), (Spacing(4), Normal, 0), (Opcode("add", 7), Normal, 10), (Argument(Opaque("sp")), Normal, 0), (Basic(", "), Normal, 0), (Basic("#"), Normal, 0), (Argument(Signed(16)), Normal, 0), (Eol, Normal, 0)] +[(Line(86), Dim, 5), (Address(46), Normal, 5), (Spacing(4), Normal, 0), (Opcode("pop", 55), Normal, 10), (Basic("{"), Normal, 0), (Argument(Opaque("r3")), Normal, 0), (Basic(", "), Normal, 0), (Argument(Opaque("r4")), Normal, 0), (Basic(", "), Normal, 0), (Argument(Opaque("r5")), Normal, 0), (Basic(", "), Normal, 0), (Argument(Opaque("r6")), Normal, 0), (Basic(", "), Normal, 0), (Argument(Opaque("r7")), Normal, 0), (Basic(", "), Normal, 0), (Argument(Opaque("pc")), Normal, 0), (Basic("}"), Normal, 0), (Eol, Normal, 0)] +[(Line(50), Dim, 5), (Address(48), Normal, 5), (Basic(" ~> "), Rotating(1), 0), (Opcode("mov", 47), Normal, 10), (Argument(Opaque("r0")), Normal, 0), (Basic(", "), Normal, 0), (Argument(Opaque("r5")), Normal, 0), (Eol, Normal, 0)] +[(Line(50), Dim, 5), (Address(50), Normal, 5), (Spacing(4), Normal, 0), (Opcode("mov", 47), Normal, 10), (Argument(Opaque("r1")), Normal, 0), (Basic(", "), Normal, 0), (Argument(Opaque("r6")), Normal, 0), (Eol, Normal, 0)] +[(Line(50), Dim, 5), (Address(52), Normal, 5), (Spacing(4), Normal, 0), (Opcode("bl", 19), Normal, 10), (Symbol(Symbol { name: "ServerEvent_CreateSubstitute", demangled_name: None, address: 0, size: 0, kind: Unknown, section: None, flags: FlagSet(Global), align: None, virtual_address: None }), Bright, 0), (Addend(-4), Bright, 0), (Eol, Normal, 0)] +[(Line(50), Dim, 5), (Address(56), Normal, 5), (Spacing(4), Normal, 0), (Opcode("cmp", 25), Normal, 10), (Argument(Opaque("r0")), Normal, 0), (Basic(", "), Normal, 0), (Basic("#"), Normal, 0), (Argument(Unsigned(0)), Normal, 0), (Eol, Normal, 0)] +[(Line(50), Dim, 5), (Address(58), Normal, 5), (Spacing(4), Normal, 0), (Opcode("beq", 15), Normal, 10), (BranchDest(212), Normal, 0), (Basic(" ~>"), Rotating(0), 0), (Eol, Normal, 0)] +[(Line(52), Dim, 5), (Address(60), Normal, 5), (Spacing(4), Normal, 0), (Opcode("ldr", 34), Normal, 10), (Argument(Opaque("r0")), Normal, 0), (Basic(", "), Normal, 0), (Basic("["), Normal, 0), (Argument(Opaque("pc")), Normal, 0), (Basic(", "), Normal, 0), (Basic("#"), Normal, 0), (Argument(Signed(156)), Normal, 0), (Basic("]"), Normal, 0), (Eol, Normal, 0)] +[(Line(52), Dim, 5), (Address(62), Normal, 5), (Spacing(4), Normal, 0), (Opcode("ldr", 33), Normal, 10), (Argument(Opaque("r0")), Normal, 0), (Basic(", "), Normal, 0), (Basic("["), Normal, 0), (Argument(Opaque("r5")), Normal, 0), (Basic(", "), Normal, 0), (Argument(Opaque("r0")), Normal, 0), (Basic("]"), Normal, 0), (Eol, Normal, 0)] +[(Line(52), Dim, 5), (Address(64), Normal, 5), (Spacing(4), Normal, 0), (Opcode("ldrb", 36), Normal, 10), (Argument(Opaque("r2")), Normal, 0), (Basic(", "), Normal, 0), (Basic("["), Normal, 0), (Argument(Opaque("r0")), Normal, 0), (Basic(", "), Normal, 0), (Basic("#"), Normal, 0), (Argument(Signed(5)), Normal, 0), (Basic("]"), Normal, 0), (Eol, Normal, 0)] +[(Line(52), Dim, 5), (Address(66), Normal, 5), (Spacing(4), Normal, 0), (Opcode("lsl", 42), Normal, 10), (Argument(Opaque("r1")), Normal, 0), (Basic(", "), Normal, 0), (Argument(Opaque("r2")), Normal, 0), (Basic(", "), Normal, 0), (Basic("#"), Normal, 0), (Argument(Unsigned(31)), Normal, 0), (Eol, Normal, 0)] +[(Line(52), Dim, 5), (Address(68), Normal, 5), (Spacing(4), Normal, 0), (Opcode("lsr", 44), Normal, 10), (Argument(Opaque("r1")), Normal, 0), (Basic(", "), Normal, 0), (Argument(Opaque("r1")), Normal, 0), (Basic(", "), Normal, 0), (Basic("#"), Normal, 0), (Argument(Unsigned(31)), Normal, 0), (Eol, Normal, 0)] +[(Line(52), Dim, 5), (Address(70), Normal, 5), (Spacing(4), Normal, 0), (Opcode("bne", 15), Normal, 10), (BranchDest(212), Normal, 0), (Basic(" ~>"), Rotating(0), 0), (Eol, Normal, 0)] +[(Line(52), Dim, 5), (Address(72), Normal, 5), (Spacing(4), Normal, 0), (Opcode("mov", 46), Normal, 10), (Argument(Opaque("r1")), Normal, 0), (Basic(", "), Normal, 0), (Basic("#"), Normal, 0), (Argument(Unsigned(1)), Normal, 0), (Eol, Normal, 0)] +[(Line(52), Dim, 5), (Address(74), Normal, 5), (Spacing(4), Normal, 0), (Opcode("bic", 17), Normal, 10), (Argument(Opaque("r2")), Normal, 0), (Basic(", "), Normal, 0), (Argument(Opaque("r1")), Normal, 0), (Eol, Normal, 0)] +[(Line(52), Dim, 5), (Address(76), Normal, 5), (Spacing(4), Normal, 0), (Opcode("mov", 46), Normal, 10), (Argument(Opaque("r1")), Normal, 0), (Basic(", "), Normal, 0), (Basic("#"), Normal, 0), (Argument(Unsigned(1)), Normal, 0), (Eol, Normal, 0)] +[(Line(52), Dim, 5), (Address(78), Normal, 5), (Spacing(4), Normal, 0), (Opcode("orr", 54), Normal, 10), (Argument(Opaque("r1")), Normal, 0), (Basic(", "), Normal, 0), (Argument(Opaque("r2")), Normal, 0), (Eol, Normal, 0)] +[(Line(52), Dim, 5), (Address(80), Normal, 5), (Spacing(4), Normal, 0), (Opcode("strb", 67), Normal, 10), (Argument(Opaque("r1")), Normal, 0), (Basic(", "), Normal, 0), (Basic("["), Normal, 0), (Argument(Opaque("r0")), Normal, 0), (Basic(", "), Normal, 0), (Basic("#"), Normal, 0), (Argument(Signed(5)), Normal, 0), (Basic("]"), Normal, 0), (Eol, Normal, 0)] +[(Line(52), Dim, 5), (Address(82), Normal, 5), (Spacing(4), Normal, 0), (Opcode("ldrb", 36), Normal, 10), (Argument(Opaque("r2")), Normal, 0), (Basic(", "), Normal, 0), (Basic("["), Normal, 0), (Argument(Opaque("r0")), Normal, 0), (Basic(", "), Normal, 0), (Basic("#"), Normal, 0), (Argument(Signed(5)), Normal, 0), (Basic("]"), Normal, 0), (Eol, Normal, 0)] +[(Line(52), Dim, 5), (Address(84), Normal, 5), (Spacing(4), Normal, 0), (Opcode("mov", 46), Normal, 10), (Argument(Opaque("r1")), Normal, 0), (Basic(", "), Normal, 0), (Basic("#"), Normal, 0), (Argument(Unsigned(2)), Normal, 0), (Eol, Normal, 0)] +[(Line(86), Dim, 5), (Address(86), Normal, 5), (Spacing(4), Normal, 0), (Opcode("add", 7), Normal, 10), (Argument(Opaque("sp")), Normal, 0), (Basic(", "), Normal, 0), (Basic("#"), Normal, 0), (Argument(Signed(16)), Normal, 0), (Eol, Normal, 0)] +[(Line(52), Dim, 5), (Address(88), Normal, 5), (Spacing(4), Normal, 0), (Opcode("orr", 54), Normal, 10), (Argument(Opaque("r1")), Normal, 0), (Basic(", "), Normal, 0), (Argument(Opaque("r2")), Normal, 0), (Eol, Normal, 0)] +[(Line(52), Dim, 5), (Address(90), Normal, 5), (Spacing(4), Normal, 0), (Opcode("strb", 67), Normal, 10), (Argument(Opaque("r1")), Normal, 0), (Basic(", "), Normal, 0), (Basic("["), Normal, 0), (Argument(Opaque("r0")), Normal, 0), (Basic(", "), Normal, 0), (Basic("#"), Normal, 0), (Argument(Signed(5)), Normal, 0), (Basic("]"), Normal, 0), (Eol, Normal, 0)] +[(Line(86), Dim, 5), (Address(92), Normal, 5), (Spacing(4), Normal, 0), (Opcode("pop", 55), Normal, 10), (Basic("{"), Normal, 0), (Argument(Opaque("r3")), Normal, 0), (Basic(", "), Normal, 0), (Argument(Opaque("r4")), Normal, 0), (Basic(", "), Normal, 0), (Argument(Opaque("r5")), Normal, 0), (Basic(", "), Normal, 0), (Argument(Opaque("r6")), Normal, 0), (Basic(", "), Normal, 0), (Argument(Opaque("r7")), Normal, 0), (Basic(", "), Normal, 0), (Argument(Opaque("pc")), Normal, 0), (Basic("}"), Normal, 0), (Eol, Normal, 0)] +[(Line(57), Dim, 5), (Address(94), Normal, 5), (Basic(" ~> "), Rotating(2), 0), (Opcode("ldr", 34), Normal, 10), (Argument(Opaque("r0")), Normal, 0), (Basic(", "), Normal, 0), (Basic("["), Normal, 0), (Argument(Opaque("pc")), Normal, 0), (Basic(", "), Normal, 0), (Basic("#"), Normal, 0), (Argument(Signed(128)), Normal, 0), (Basic("]"), Normal, 0), (Eol, Normal, 0)] +[(Line(57), Dim, 5), (Address(96), Normal, 5), (Spacing(4), Normal, 0), (Opcode("ldr", 34), Normal, 10), (Argument(Opaque("r1")), Normal, 0), (Basic(", "), Normal, 0), (Basic("["), Normal, 0), (Argument(Opaque("pc")), Normal, 0), (Basic(", "), Normal, 0), (Basic("#"), Normal, 0), (Argument(Signed(128)), Normal, 0), (Basic("]"), Normal, 0), (Eol, Normal, 0)] +[(Line(57), Dim, 5), (Address(98), Normal, 5), (Spacing(4), Normal, 0), (Opcode("add", 4), Normal, 10), (Argument(Opaque("r0")), Normal, 0), (Basic(", "), Normal, 0), (Argument(Opaque("r5")), Normal, 0), (Basic(", "), Normal, 0), (Argument(Opaque("r0")), Normal, 0), (Eol, Normal, 0)] +[(Line(57), Dim, 5), (Address(100), Normal, 5), (Spacing(4), Normal, 0), (Opcode("bl", 19), Normal, 10), (Symbol(Symbol { name: "HEManager_PushState", demangled_name: None, address: 0, size: 0, kind: Unknown, section: None, flags: FlagSet(Global), align: None, virtual_address: None }), Bright, 0), (Addend(-4), Bright, 0), (Eol, Normal, 0)] +[(Line(57), Dim, 5), (Address(104), Normal, 5), (Spacing(4), Normal, 0), (Opcode("str", 66), Normal, 10), (Argument(Opaque("r0")), Normal, 0), (Basic(", "), Normal, 0), (Basic("["), Normal, 0), (Argument(Opaque("sp")), Normal, 0), (Basic(", "), Normal, 0), (Basic("#"), Normal, 0), (Argument(Signed(8)), Normal, 0), (Basic("]"), Normal, 0), (Eol, Normal, 0)] +[(Line(61), Dim, 5), (Address(106), Normal, 5), (Spacing(4), Normal, 0), (Opcode("mov", 47), Normal, 10), (Argument(Opaque("r0")), Normal, 0), (Basic(", "), Normal, 0), (Argument(Opaque("r5")), Normal, 0), (Eol, Normal, 0)] +[(Line(61), Dim, 5), (Address(108), Normal, 5), (Spacing(4), Normal, 0), (Opcode("bl", 19), Normal, 10), (Symbol(Symbol { name: "BattleHandler_Result", demangled_name: None, address: 0, size: 0, kind: Unknown, section: None, flags: FlagSet(Global), align: None, virtual_address: None }), Bright, 0), (Addend(-4), Bright, 0), (Eol, Normal, 0)] +[(Line(61), Dim, 5), (Address(112), Normal, 5), (Spacing(4), Normal, 0), (Opcode("mov", 47), Normal, 10), (Argument(Opaque("r7")), Normal, 0), (Basic(", "), Normal, 0), (Argument(Opaque("r0")), Normal, 0), (Eol, Normal, 0)] +[(Line(63), Dim, 5), (Address(114), Normal, 5), (Spacing(4), Normal, 0), (Opcode("add", 6), Normal, 10), (Argument(Opaque("r0")), Normal, 0), (Basic(", "), Normal, 0), (Argument(Opaque("sp")), Normal, 0), (Basic(", "), Normal, 0), (Basic("#"), Normal, 0), (Argument(Signed(12)), Normal, 0), (Eol, Normal, 0)] +[(Line(63), Dim, 5), (Address(116), Normal, 5), (Spacing(4), Normal, 0), (Opcode("str", 66), Normal, 10), (Argument(Opaque("r0")), Normal, 0), (Basic(", "), Normal, 0), (Basic("["), Normal, 0), (Argument(Opaque("sp")), Normal, 0), (Basic(", "), Normal, 0), (Basic("#"), Normal, 0), (Argument(Signed(0)), Normal, 0), (Basic("]"), Normal, 0), (Eol, Normal, 0)] +[(Line(63), Dim, 5), (Address(118), Normal, 5), (Spacing(4), Normal, 0), (Opcode("ldr", 35), Normal, 10), (Argument(Opaque("r3")), Normal, 0), (Basic(", "), Normal, 0), (Basic("["), Normal, 0), (Argument(Opaque("sp")), Normal, 0), (Basic(", "), Normal, 0), (Basic("#"), Normal, 0), (Argument(Signed(4)), Normal, 0), (Basic("]"), Normal, 0), (Eol, Normal, 0)] +[(Line(63), Dim, 5), (Address(120), Normal, 5), (Spacing(4), Normal, 0), (Opcode("mov", 47), Normal, 10), (Argument(Opaque("r0")), Normal, 0), (Basic(", "), Normal, 0), (Argument(Opaque("r5")), Normal, 0), (Eol, Normal, 0)] +[(Line(63), Dim, 5), (Address(122), Normal, 5), (Spacing(4), Normal, 0), (Opcode("mov", 47), Normal, 10), (Argument(Opaque("r1")), Normal, 0), (Basic(", "), Normal, 0), (Argument(Opaque("r4")), Normal, 0), (Eol, Normal, 0)] +[(Line(63), Dim, 5), (Address(124), Normal, 5), (Spacing(4), Normal, 0), (Opcode("mov", 47), Normal, 10), (Argument(Opaque("r2")), Normal, 0), (Basic(", "), Normal, 0), (Argument(Opaque("r6")), Normal, 0), (Eol, Normal, 0)] +[(Line(63), Dim, 5), (Address(126), Normal, 5), (Spacing(4), Normal, 0), (Opcode("bl", 19), Normal, 10), (Symbol(Symbol { name: "ServerEvent_UncategorizedMove", demangled_name: None, address: 0, size: 0, kind: Unknown, section: None, flags: FlagSet(Global), align: None, virtual_address: None }), Bright, 0), (Addend(-4), Bright, 0), (Eol, Normal, 0)] +[(Line(63), Dim, 5), (Address(130), Normal, 5), (Spacing(4), Normal, 0), (Opcode("cmp", 25), Normal, 10), (Argument(Opaque("r0")), Normal, 0), (Basic(", "), Normal, 0), (Basic("#"), Normal, 0), (Argument(Unsigned(0)), Normal, 0), (Eol, Normal, 0)] +[(Line(63), Dim, 5), (Address(132), Normal, 5), (Spacing(4), Normal, 0), (Opcode("beq", 15), Normal, 10), (BranchDest(168), Normal, 0), (Basic(" ~>"), Rotating(3), 0), (Eol, Normal, 0)] +[(Line(65), Dim, 5), (Address(134), Normal, 5), (Spacing(4), Normal, 0), (Opcode("mov", 47), Normal, 10), (Argument(Opaque("r0")), Normal, 0), (Basic(", "), Normal, 0), (Argument(Opaque("r5")), Normal, 0), (Eol, Normal, 0)] +[(Line(65), Dim, 5), (Address(136), Normal, 5), (Spacing(4), Normal, 0), (Opcode("bl", 19), Normal, 10), (Symbol(Symbol { name: "BattleHandler_Result", demangled_name: None, address: 0, size: 0, kind: Unknown, section: None, flags: FlagSet(Global), align: None, virtual_address: None }), Bright, 0), (Addend(-4), Bright, 0), (Eol, Normal, 0)] +[(Line(65), Dim, 5), (Address(140), Normal, 5), (Spacing(4), Normal, 0), (Opcode("mov", 47), Normal, 10), (Argument(Opaque("r7")), Normal, 0), (Basic(", "), Normal, 0), (Argument(Opaque("r0")), Normal, 0), (Eol, Normal, 0)] +[(Line(66), Dim, 5), (Address(142), Normal, 5), (Spacing(4), Normal, 0), (Opcode("cmp", 25), Normal, 10), (Argument(Opaque("r7")), Normal, 0), (Basic(", "), Normal, 0), (Basic("#"), Normal, 0), (Argument(Unsigned(2)), Normal, 0), (Eol, Normal, 0)] +[(Line(66), Dim, 5), (Address(144), Normal, 5), (Spacing(4), Normal, 0), (Opcode("bne", 15), Normal, 10), (BranchDest(168), Normal, 0), (Basic(" ~>"), Rotating(3), 0), (Eol, Normal, 0)] +[(Line(68), Dim, 5), (Address(146), Normal, 5), (Spacing(4), Normal, 0), (Opcode("ldr", 34), Normal, 10), (Argument(Opaque("r0")), Normal, 0), (Basic(", "), Normal, 0), (Basic("["), Normal, 0), (Argument(Opaque("pc")), Normal, 0), (Basic(", "), Normal, 0), (Basic("#"), Normal, 0), (Argument(Signed(72)), Normal, 0), (Basic("]"), Normal, 0), (Eol, Normal, 0)] +[(Line(68), Dim, 5), (Address(148), Normal, 5), (Spacing(4), Normal, 0), (Opcode("ldr", 33), Normal, 10), (Argument(Opaque("r0")), Normal, 0), (Basic(", "), Normal, 0), (Basic("["), Normal, 0), (Argument(Opaque("r5")), Normal, 0), (Basic(", "), Normal, 0), (Argument(Opaque("r0")), Normal, 0), (Basic("]"), Normal, 0), (Eol, Normal, 0)] +[(Line(68), Dim, 5), (Address(150), Normal, 5), (Spacing(4), Normal, 0), (Opcode("ldrb", 36), Normal, 10), (Argument(Opaque("r2")), Normal, 0), (Basic(", "), Normal, 0), (Basic("["), Normal, 0), (Argument(Opaque("r0")), Normal, 0), (Basic(", "), Normal, 0), (Basic("#"), Normal, 0), (Argument(Signed(5)), Normal, 0), (Basic("]"), Normal, 0), (Eol, Normal, 0)] +[(Line(68), Dim, 5), (Address(152), Normal, 5), (Spacing(4), Normal, 0), (Opcode("lsl", 42), Normal, 10), (Argument(Opaque("r1")), Normal, 0), (Basic(", "), Normal, 0), (Argument(Opaque("r2")), Normal, 0), (Basic(", "), Normal, 0), (Basic("#"), Normal, 0), (Argument(Unsigned(31)), Normal, 0), (Eol, Normal, 0)] +[(Line(68), Dim, 5), (Address(154), Normal, 5), (Spacing(4), Normal, 0), (Opcode("lsr", 44), Normal, 10), (Argument(Opaque("r1")), Normal, 0), (Basic(", "), Normal, 0), (Argument(Opaque("r1")), Normal, 0), (Basic(", "), Normal, 0), (Basic("#"), Normal, 0), (Argument(Unsigned(31)), Normal, 0), (Eol, Normal, 0)] +[(Line(68), Dim, 5), (Address(156), Normal, 5), (Spacing(4), Normal, 0), (Opcode("bne", 15), Normal, 10), (BranchDest(168), Normal, 0), (Basic(" ~>"), Rotating(3), 0), (Eol, Normal, 0)] +[(Line(68), Dim, 5), (Address(158), Normal, 5), (Spacing(4), Normal, 0), (Opcode("mov", 46), Normal, 10), (Argument(Opaque("r1")), Normal, 0), (Basic(", "), Normal, 0), (Basic("#"), Normal, 0), (Argument(Unsigned(1)), Normal, 0), (Eol, Normal, 0)] +[(Line(68), Dim, 5), (Address(160), Normal, 5), (Spacing(4), Normal, 0), (Opcode("bic", 17), Normal, 10), (Argument(Opaque("r2")), Normal, 0), (Basic(", "), Normal, 0), (Argument(Opaque("r1")), Normal, 0), (Eol, Normal, 0)] +[(Line(68), Dim, 5), (Address(162), Normal, 5), (Spacing(4), Normal, 0), (Opcode("mov", 46), Normal, 10), (Argument(Opaque("r1")), Normal, 0), (Basic(", "), Normal, 0), (Basic("#"), Normal, 0), (Argument(Unsigned(1)), Normal, 0), (Eol, Normal, 0)] +[(Line(68), Dim, 5), (Address(164), Normal, 5), (Spacing(4), Normal, 0), (Opcode("orr", 54), Normal, 10), (Argument(Opaque("r1")), Normal, 0), (Basic(", "), Normal, 0), (Argument(Opaque("r2")), Normal, 0), (Eol, Normal, 0)] +[(Line(68), Dim, 5), (Address(166), Normal, 5), (Spacing(4), Normal, 0), (Opcode("strb", 67), Normal, 10), (Argument(Opaque("r1")), Normal, 0), (Basic(", "), Normal, 0), (Basic("["), Normal, 0), (Argument(Opaque("r0")), Normal, 0), (Basic(", "), Normal, 0), (Basic("#"), Normal, 0), (Argument(Signed(5)), Normal, 0), (Basic("]"), Normal, 0), (Eol, Normal, 0)] +[(Line(72), Dim, 5), (Address(168), Normal, 5), (Basic(" ~> "), Rotating(3), 0), (Opcode("cmp", 25), Normal, 10), (Argument(Opaque("r7")), Normal, 0), (Basic(", "), Normal, 0), (Basic("#"), Normal, 0), (Argument(Unsigned(1)), Normal, 0), (Eol, Normal, 0)] +[(Line(72), Dim, 5), (Address(170), Normal, 5), (Spacing(4), Normal, 0), (Opcode("bhi", 15), Normal, 10), (BranchDest(200), Normal, 0), (Basic(" ~>"), Rotating(4), 0), (Eol, Normal, 0)] +[(Line(75), Dim, 5), (Address(172), Normal, 5), (Spacing(4), Normal, 0), (Opcode("ldr", 35), Normal, 10), (Argument(Opaque("r0")), Normal, 0), (Basic(", "), Normal, 0), (Basic("["), Normal, 0), (Argument(Opaque("sp")), Normal, 0), (Basic(", "), Normal, 0), (Basic("#"), Normal, 0), (Argument(Signed(12)), Normal, 0), (Basic("]"), Normal, 0), (Eol, Normal, 0)] +[(Line(75), Dim, 5), (Address(174), Normal, 5), (Spacing(4), Normal, 0), (Opcode("cmp", 25), Normal, 10), (Argument(Opaque("r0")), Normal, 0), (Basic(", "), Normal, 0), (Basic("#"), Normal, 0), (Argument(Unsigned(0)), Normal, 0), (Eol, Normal, 0)] +[(Line(75), Dim, 5), (Address(176), Normal, 5), (Spacing(4), Normal, 0), (Opcode("beq", 15), Normal, 10), (BranchDest(200), Normal, 0), (Basic(" ~>"), Rotating(4), 0), (Eol, Normal, 0)] +[(Line(75), Dim, 5), (Address(178), Normal, 5), (Spacing(4), Normal, 0), (Opcode("ldr", 34), Normal, 10), (Argument(Opaque("r0")), Normal, 0), (Basic(", "), Normal, 0), (Basic("["), Normal, 0), (Argument(Opaque("pc")), Normal, 0), (Basic(", "), Normal, 0), (Basic("#"), Normal, 0), (Argument(Signed(52)), Normal, 0), (Basic("]"), Normal, 0), (Eol, Normal, 0)] +[(Line(75), Dim, 5), (Address(180), Normal, 5), (Spacing(4), Normal, 0), (Opcode("ldrb", 37), Normal, 10), (Argument(Opaque("r0")), Normal, 0), (Basic(", "), Normal, 0), (Basic("["), Normal, 0), (Argument(Opaque("r5")), Normal, 0), (Basic(", "), Normal, 0), (Argument(Opaque("r0")), Normal, 0), (Basic("]"), Normal, 0), (Eol, Normal, 0)] +[(Line(75), Dim, 5), (Address(182), Normal, 5), (Spacing(4), Normal, 0), (Opcode("lsl", 42), Normal, 10), (Argument(Opaque("r0")), Normal, 0), (Basic(", "), Normal, 0), (Argument(Opaque("r0")), Normal, 0), (Basic(", "), Normal, 0), (Basic("#"), Normal, 0), (Argument(Unsigned(27)), Normal, 0), (Eol, Normal, 0)] +[(Line(75), Dim, 5), (Address(184), Normal, 5), (Spacing(4), Normal, 0), (Opcode("lsr", 44), Normal, 10), (Argument(Opaque("r0")), Normal, 0), (Basic(", "), Normal, 0), (Argument(Opaque("r0")), Normal, 0), (Basic(", "), Normal, 0), (Basic("#"), Normal, 0), (Argument(Unsigned(31)), Normal, 0), (Eol, Normal, 0)] +[(Line(75), Dim, 5), (Address(186), Normal, 5), (Spacing(4), Normal, 0), (Opcode("bne", 15), Normal, 10), (BranchDest(200), Normal, 0), (Basic(" ~>"), Rotating(4), 0), (Eol, Normal, 0)] +[(Line(77), Dim, 5), (Address(188), Normal, 5), (Spacing(4), Normal, 0), (Opcode("ldr", 32), Normal, 10), (Argument(Opaque("r0")), Normal, 0), (Basic(", "), Normal, 0), (Basic("["), Normal, 0), (Argument(Opaque("r5")), Normal, 0), (Basic(", "), Normal, 0), (Basic("#"), Normal, 0), (Argument(Signed(12)), Normal, 0), (Basic("]"), Normal, 0), (Eol, Normal, 0)] +[(Line(77), Dim, 5), (Address(190), Normal, 5), (Spacing(4), Normal, 0), (Opcode("ldr", 34), Normal, 10), (Argument(Opaque("r3")), Normal, 0), (Basic(", "), Normal, 0), (Basic("["), Normal, 0), (Argument(Opaque("pc")), Normal, 0), (Basic(", "), Normal, 0), (Basic("#"), Normal, 0), (Argument(Signed(44)), Normal, 0), (Basic("]"), Normal, 0), (Eol, Normal, 0)] +[(Line(77), Dim, 5), (Address(192), Normal, 5), (Spacing(4), Normal, 0), (Opcode("mov", 46), Normal, 10), (Argument(Opaque("r1")), Normal, 0), (Basic(", "), Normal, 0), (Basic("#"), Normal, 0), (Argument(Unsigned(90)), Normal, 0), (Eol, Normal, 0)] +[(Line(77), Dim, 5), (Address(194), Normal, 5), (Spacing(4), Normal, 0), (Opcode("mov", 46), Normal, 10), (Argument(Opaque("r2")), Normal, 0), (Basic(", "), Normal, 0), (Basic("#"), Normal, 0), (Argument(Unsigned(71)), Normal, 0), (Eol, Normal, 0)] +[(Line(77), Dim, 5), (Address(196), Normal, 5), (Spacing(4), Normal, 0), (Opcode("bl", 19), Normal, 10), (Symbol(Symbol { name: "SCQUE_PUT_MsgImpl", demangled_name: None, address: 0, size: 0, kind: Unknown, section: None, flags: FlagSet(Global), align: None, virtual_address: None }), Bright, 0), (Addend(-4), Bright, 0), (Eol, Normal, 0)] +[(Line(81), Dim, 5), (Address(200), Normal, 5), (Basic(" ~> "), Rotating(4), 0), (Opcode("ldr", 34), Normal, 10), (Argument(Opaque("r0")), Normal, 0), (Basic(", "), Normal, 0), (Basic("["), Normal, 0), (Argument(Opaque("pc")), Normal, 0), (Basic(", "), Normal, 0), (Basic("#"), Normal, 0), (Argument(Signed(20)), Normal, 0), (Basic("]"), Normal, 0), (Eol, Normal, 0)] +[(Line(81), Dim, 5), (Address(202), Normal, 5), (Spacing(4), Normal, 0), (Opcode("ldr", 35), Normal, 10), (Argument(Opaque("r1")), Normal, 0), (Basic(", "), Normal, 0), (Basic("["), Normal, 0), (Argument(Opaque("sp")), Normal, 0), (Basic(", "), Normal, 0), (Basic("#"), Normal, 0), (Argument(Signed(8)), Normal, 0), (Basic("]"), Normal, 0), (Eol, Normal, 0)] +[(Line(81), Dim, 5), (Address(204), Normal, 5), (Spacing(4), Normal, 0), (Opcode("ldr", 34), Normal, 10), (Argument(Opaque("r2")), Normal, 0), (Basic(", "), Normal, 0), (Basic("["), Normal, 0), (Argument(Opaque("pc")), Normal, 0), (Basic(", "), Normal, 0), (Basic("#"), Normal, 0), (Argument(Signed(32)), Normal, 0), (Basic("]"), Normal, 0), (Eol, Normal, 0)] +[(Line(81), Dim, 5), (Address(206), Normal, 5), (Spacing(4), Normal, 0), (Opcode("add", 4), Normal, 10), (Argument(Opaque("r0")), Normal, 0), (Basic(", "), Normal, 0), (Argument(Opaque("r5")), Normal, 0), (Basic(", "), Normal, 0), (Argument(Opaque("r0")), Normal, 0), (Eol, Normal, 0)] +[(Line(81), Dim, 5), (Address(208), Normal, 5), (Spacing(4), Normal, 0), (Opcode("bl", 19), Normal, 10), (Symbol(Symbol { name: "HEManager_PopState", demangled_name: None, address: 0, size: 0, kind: Unknown, section: None, flags: FlagSet(Global), align: None, virtual_address: None }), Bright, 0), (Addend(-4), Bright, 0), (Eol, Normal, 0)] +[(Line(86), Dim, 5), (Address(212), Normal, 5), (Basic(" ~> "), Rotating(0), 0), (Opcode("add", 7), Normal, 10), (Argument(Opaque("sp")), Normal, 0), (Basic(", "), Normal, 0), (Basic("#"), Normal, 0), (Argument(Signed(16)), Normal, 0), (Eol, Normal, 0)] +[(Line(86), Dim, 5), (Address(214), Normal, 5), (Spacing(4), Normal, 0), (Opcode("pop", 55), Normal, 10), (Basic("{"), Normal, 0), (Argument(Opaque("r3")), Normal, 0), (Basic(", "), Normal, 0), (Argument(Opaque("r4")), Normal, 0), (Basic(", "), Normal, 0), (Argument(Opaque("r5")), Normal, 0), (Basic(", "), Normal, 0), (Argument(Opaque("r6")), Normal, 0), (Basic(", "), Normal, 0), (Argument(Opaque("r7")), Normal, 0), (Basic(", "), Normal, 0), (Argument(Opaque("pc")), Normal, 0), (Basic("}"), Normal, 0), (Eol, Normal, 0)] +[(Line(86), Dim, 5), (Address(216), Normal, 5), (Spacing(4), Normal, 0), (Opcode(".word", 65535), Normal, 10), (Basic("#"), Normal, 0), (Argument(Unsigned(285)), Normal, 0), (Eol, Normal, 0)] +[(Line(86), Dim, 5), (Address(220), Normal, 5), (Spacing(4), Normal, 0), (Opcode(".word", 65535), Normal, 10), (Basic("#"), Normal, 0), (Argument(Unsigned(1192)), Normal, 0), (Eol, Normal, 0)] +[(Line(86), Dim, 5), (Address(224), Normal, 5), (Spacing(4), Normal, 0), (Opcode(".word", 65535), Normal, 10), (Basic("#"), Normal, 0), (Argument(Unsigned(7544)), Normal, 0), (Eol, Normal, 0)] +[(Line(86), Dim, 5), (Address(228), Normal, 5), (Spacing(4), Normal, 0), (Opcode(".word", 65535), Normal, 10), (Basic("#"), Normal, 0), (Argument(Unsigned(9103)), Normal, 0), (Eol, Normal, 0)] +[(Line(86), Dim, 5), (Address(232), Normal, 5), (Spacing(4), Normal, 0), (Opcode(".word", 65535), Normal, 10), (Basic("#"), Normal, 0), (Argument(Unsigned(1930)), Normal, 0), (Eol, Normal, 0)] +[(Line(86), Dim, 5), (Address(236), Normal, 5), (Spacing(4), Normal, 0), (Opcode(".word", 65535), Normal, 10), (Basic("#"), Normal, 0), (Argument(Unsigned(4294901760)), Normal, 0), (Eol, Normal, 0)] +[(Line(86), Dim, 5), (Address(240), Normal, 5), (Spacing(4), Normal, 0), (Opcode(".word", 65535), Normal, 10), (Basic("#"), Normal, 0), (Argument(Unsigned(9129)), Normal, 0), (Eol, Normal, 0)] diff --git a/objdiff-core/tests/snapshots/arch_arm__read_thumb.snap b/objdiff-core/tests/snapshots/arch_arm__read_thumb.snap new file mode 100644 index 0000000..f68b3ff --- /dev/null +++ b/objdiff-core/tests/snapshots/arch_arm__read_thumb.snap @@ -0,0 +1,3808 @@ +--- +source: objdiff-core/tests/arch_arm.rs +expression: obj +--- +Object { + arch: ArchArm { + disasm_modes: { + 17: [ + DisasmMode { + address: 0, + mapping: Thumb, + }, + DisasmMode { + address: 216, + mapping: Data, + }, + ], + }, + detected_version: None, + endianness: Little, + }, + endianness: Little, + symbols: [ + Symbol { + name: "$t", + demangled_name: None, + address: 0, + size: 0, + kind: Function, + section: Some( + 17, + ), + flags: FlagSet(Local | Hidden), + align: None, + virtual_address: None, + }, + Symbol { + name: "$d", + demangled_name: None, + address: 216, + size: 0, + kind: Function, + section: Some( + 17, + ), + flags: FlagSet(Local | Hidden), + align: None, + virtual_address: None, + }, + Symbol { + name: "[.debug_info]", + demangled_name: None, + address: 0, + size: 70, + kind: Section, + section: Some( + 4, + ), + flags: FlagSet(Local), + align: None, + virtual_address: None, + }, + Symbol { + name: "[.debug_line]", + demangled_name: None, + address: 0, + size: 91, + kind: Section, + section: Some( + 9, + ), + flags: FlagSet(Local), + align: None, + virtual_address: None, + }, + Symbol { + name: "[.debug_line]", + demangled_name: None, + address: 0, + size: 0, + kind: Section, + section: Some( + 11, + ), + flags: FlagSet(Local), + align: None, + virtual_address: None, + }, + Symbol { + name: "[.debug_abbrev]", + demangled_name: None, + address: 0, + size: 211, + kind: Section, + section: Some( + 16, + ), + flags: FlagSet(Local), + align: None, + virtual_address: None, + }, + Symbol { + name: "[.debug_pubnames]", + demangled_name: None, + address: 0, + size: 18, + kind: Section, + section: Some( + 13, + ), + flags: FlagSet(Local), + align: None, + virtual_address: None, + }, + Symbol { + name: ".dwarf_type.102", + demangled_name: None, + address: 82, + size: 6, + kind: Object, + section: Some( + 4, + ), + flags: FlagSet(Local), + align: None, + virtual_address: None, + }, + Symbol { + name: ".dwarf_type.103", + demangled_name: None, + address: 88, + size: 1923, + kind: Object, + section: Some( + 4, + ), + flags: FlagSet(Local), + align: None, + virtual_address: None, + }, + Symbol { + name: ".dwarf_type.104", + demangled_name: None, + address: 2028, + size: 6, + kind: Object, + section: Some( + 4, + ), + flags: FlagSet(Local), + align: None, + virtual_address: None, + }, + Symbol { + name: ".dwarf_type.105", + demangled_name: None, + address: 2034, + size: 666, + kind: Object, + section: Some( + 4, + ), + flags: FlagSet(Local), + align: None, + virtual_address: None, + }, + Symbol { + name: ".dwarf_type.106", + demangled_name: None, + address: 2717, + size: 6, + kind: Object, + section: Some( + 4, + ), + flags: FlagSet(Local), + align: None, + virtual_address: None, + }, + Symbol { + name: ".dwarf_type.107", + demangled_name: None, + address: 2723, + size: 39, + kind: Object, + section: Some( + 4, + ), + flags: FlagSet(Local), + align: None, + virtual_address: None, + }, + Symbol { + name: ".dwarf_type.108", + demangled_name: None, + address: 2819, + size: 6, + kind: Object, + section: Some( + 4, + ), + flags: FlagSet(Local), + align: None, + virtual_address: None, + }, + Symbol { + name: ".dwarf_type.109", + demangled_name: None, + address: 2825, + size: 6, + kind: Object, + section: Some( + 4, + ), + flags: FlagSet(Local), + align: None, + virtual_address: None, + }, + Symbol { + name: ".dwarf_type.110", + demangled_name: None, + address: 2831, + size: 1517, + kind: Object, + section: Some( + 4, + ), + flags: FlagSet(Local), + align: None, + virtual_address: None, + }, + Symbol { + name: ".dwarf_type.111", + demangled_name: None, + address: 4370, + size: 6, + kind: Object, + section: Some( + 4, + ), + flags: FlagSet(Local), + align: None, + virtual_address: None, + }, + Symbol { + name: ".dwarf_type.112", + demangled_name: None, + address: 4376, + size: 1199, + kind: Object, + section: Some( + 4, + ), + flags: FlagSet(Local), + align: None, + virtual_address: None, + }, + Symbol { + name: ".dwarf_type.113", + demangled_name: None, + address: 5672, + size: 17, + kind: Object, + section: Some( + 4, + ), + flags: FlagSet(Local), + align: None, + virtual_address: None, + }, + Symbol { + name: ".dwarf_type.114", + demangled_name: None, + address: 5797, + size: 6, + kind: Object, + section: Some( + 4, + ), + flags: FlagSet(Local), + align: None, + virtual_address: None, + }, + Symbol { + name: ".dwarf_type.115", + demangled_name: None, + address: 5803, + size: 17, + kind: Object, + section: Some( + 4, + ), + flags: FlagSet(Local), + align: None, + virtual_address: None, + }, + Symbol { + name: ".dwarf_type.116", + demangled_name: None, + address: 5820, + size: 6, + kind: Object, + section: Some( + 4, + ), + flags: FlagSet(Local), + align: None, + virtual_address: None, + }, + Symbol { + name: ".dwarf_type.117", + demangled_name: None, + address: 5826, + size: 17, + kind: Object, + section: Some( + 4, + ), + flags: FlagSet(Local), + align: None, + virtual_address: None, + }, + Symbol { + name: ".dwarf_type.118", + demangled_name: None, + address: 5843, + size: 6, + kind: Object, + section: Some( + 4, + ), + flags: FlagSet(Local), + align: None, + virtual_address: None, + }, + Symbol { + name: ".dwarf_type.119", + demangled_name: None, + address: 5849, + size: 17, + kind: Object, + section: Some( + 4, + ), + flags: FlagSet(Local), + align: None, + virtual_address: None, + }, + Symbol { + name: ".dwarf_type.120", + demangled_name: None, + address: 5866, + size: 17, + kind: Object, + section: Some( + 4, + ), + flags: FlagSet(Local), + align: None, + virtual_address: None, + }, + Symbol { + name: ".dwarf_type.121", + demangled_name: None, + address: 5883, + size: 6, + kind: Object, + section: Some( + 4, + ), + flags: FlagSet(Local), + align: None, + virtual_address: None, + }, + Symbol { + name: ".dwarf_type.122", + demangled_name: None, + address: 5889, + size: 17, + kind: Object, + section: Some( + 4, + ), + flags: FlagSet(Local), + align: None, + virtual_address: None, + }, + Symbol { + name: ".dwarf_type.123", + demangled_name: None, + address: 5906, + size: 6, + kind: Object, + section: Some( + 4, + ), + flags: FlagSet(Local), + align: None, + virtual_address: None, + }, + Symbol { + name: ".dwarf_type.124", + demangled_name: None, + address: 5912, + size: 6, + kind: Object, + section: Some( + 4, + ), + flags: FlagSet(Local), + align: None, + virtual_address: None, + }, + Symbol { + name: ".dwarf_type.125", + demangled_name: None, + address: 5918, + size: 6, + kind: Object, + section: Some( + 4, + ), + flags: FlagSet(Local), + align: None, + virtual_address: None, + }, + Symbol { + name: ".dwarf_type.126", + demangled_name: None, + address: 5924, + size: 6, + kind: Object, + section: Some( + 4, + ), + flags: FlagSet(Local), + align: None, + virtual_address: None, + }, + Symbol { + name: ".dwarf_type.127", + demangled_name: None, + address: 5930, + size: 6, + kind: Object, + section: Some( + 4, + ), + flags: FlagSet(Local), + align: None, + virtual_address: None, + }, + Symbol { + name: ".dwarf_type.128", + demangled_name: None, + address: 5936, + size: 6, + kind: Object, + section: Some( + 4, + ), + flags: FlagSet(Local), + align: None, + virtual_address: None, + }, + Symbol { + name: ".dwarf_type.129", + demangled_name: None, + address: 5942, + size: 17, + kind: Object, + section: Some( + 4, + ), + flags: FlagSet(Local), + align: None, + virtual_address: None, + }, + Symbol { + name: ".dwarf_type.130", + demangled_name: None, + address: 5959, + size: 17, + kind: Object, + section: Some( + 4, + ), + flags: FlagSet(Local), + align: None, + virtual_address: None, + }, + Symbol { + name: ".dwarf_type.131", + demangled_name: None, + address: 5976, + size: 17, + kind: Object, + section: Some( + 4, + ), + flags: FlagSet(Local), + align: None, + virtual_address: None, + }, + Symbol { + name: ".dwarf_type.132", + demangled_name: None, + address: 5993, + size: 6, + kind: Object, + section: Some( + 4, + ), + flags: FlagSet(Local), + align: None, + virtual_address: None, + }, + Symbol { + name: ".dwarf_type.133", + demangled_name: None, + address: 6090, + size: 17, + kind: Object, + section: Some( + 4, + ), + flags: FlagSet(Local), + align: None, + virtual_address: None, + }, + Symbol { + name: ".dwarf_type.134", + demangled_name: None, + address: 6107, + size: 289, + kind: Object, + section: Some( + 4, + ), + flags: FlagSet(Local), + align: None, + virtual_address: None, + }, + Symbol { + name: ".dwarf_type.135", + demangled_name: None, + address: 6423, + size: 17, + kind: Object, + section: Some( + 4, + ), + flags: FlagSet(Local), + align: None, + virtual_address: None, + }, + Symbol { + name: ".dwarf_type.136", + demangled_name: None, + address: 6440, + size: 17, + kind: Object, + section: Some( + 4, + ), + flags: FlagSet(Local), + align: None, + virtual_address: None, + }, + Symbol { + name: ".dwarf_type.137", + demangled_name: None, + address: 6457, + size: 6, + kind: Object, + section: Some( + 4, + ), + flags: FlagSet(Local), + align: None, + virtual_address: None, + }, + Symbol { + name: ".dwarf_type.138", + demangled_name: None, + address: 6463, + size: 17, + kind: Object, + section: Some( + 4, + ), + flags: FlagSet(Local), + align: None, + virtual_address: None, + }, + Symbol { + name: ".dwarf_type.139", + demangled_name: None, + address: 6480, + size: 6, + kind: Object, + section: Some( + 4, + ), + flags: FlagSet(Local), + align: None, + virtual_address: None, + }, + Symbol { + name: ".dwarf_type.140", + demangled_name: None, + address: 6486, + size: 17, + kind: Object, + section: Some( + 4, + ), + flags: FlagSet(Local), + align: None, + virtual_address: None, + }, + Symbol { + name: ".dwarf_type.141", + demangled_name: None, + address: 6503, + size: 360, + kind: Object, + section: Some( + 4, + ), + flags: FlagSet(Local), + align: None, + virtual_address: None, + }, + Symbol { + name: ".dwarf_type.142", + demangled_name: None, + address: 6882, + size: 6, + kind: Object, + section: Some( + 4, + ), + flags: FlagSet(Local), + align: None, + virtual_address: None, + }, + Symbol { + name: ".dwarf_type.143", + demangled_name: None, + address: 6888, + size: 6, + kind: Object, + section: Some( + 4, + ), + flags: FlagSet(Local), + align: None, + virtual_address: None, + }, + Symbol { + name: ".dwarf_type.144", + demangled_name: None, + address: 6894, + size: 6, + kind: Object, + section: Some( + 4, + ), + flags: FlagSet(Local), + align: None, + virtual_address: None, + }, + Symbol { + name: ".dwarf_type.145", + demangled_name: None, + address: 6900, + size: 17, + kind: Object, + section: Some( + 4, + ), + flags: FlagSet(Local), + align: None, + virtual_address: None, + }, + Symbol { + name: ".dwarf_type.146", + demangled_name: None, + address: 6917, + size: 6, + kind: Object, + section: Some( + 4, + ), + flags: FlagSet(Local), + align: None, + virtual_address: None, + }, + Symbol { + name: ".dwarf_type.147", + demangled_name: None, + address: 6923, + size: 17, + kind: Object, + section: Some( + 4, + ), + flags: FlagSet(Local), + align: None, + virtual_address: None, + }, + Symbol { + name: ".dwarf_type.148", + demangled_name: None, + address: 6940, + size: 127, + kind: Object, + section: Some( + 4, + ), + flags: FlagSet(Local), + align: None, + virtual_address: None, + }, + Symbol { + name: ".dwarf_type.149", + demangled_name: None, + address: 7081, + size: 6, + kind: Object, + section: Some( + 4, + ), + flags: FlagSet(Local), + align: None, + virtual_address: None, + }, + Symbol { + name: ".dwarf_type.150", + demangled_name: None, + address: 7087, + size: 17, + kind: Object, + section: Some( + 4, + ), + flags: FlagSet(Local), + align: None, + virtual_address: None, + }, + Symbol { + name: ".dwarf_type.151", + demangled_name: None, + address: 7104, + size: 102, + kind: Object, + section: Some( + 4, + ), + flags: FlagSet(Local), + align: None, + virtual_address: None, + }, + Symbol { + name: ".dwarf_type.152", + demangled_name: None, + address: 7222, + size: 17, + kind: Object, + section: Some( + 4, + ), + flags: FlagSet(Local), + align: None, + virtual_address: None, + }, + Symbol { + name: ".dwarf_type.153", + demangled_name: None, + address: 7239, + size: 6, + kind: Object, + section: Some( + 4, + ), + flags: FlagSet(Local), + align: None, + virtual_address: None, + }, + Symbol { + name: ".dwarf_type.154", + demangled_name: None, + address: 7245, + size: 17, + kind: Object, + section: Some( + 4, + ), + flags: FlagSet(Local), + align: None, + virtual_address: None, + }, + Symbol { + name: ".dwarf_type.155", + demangled_name: None, + address: 7262, + size: 6, + kind: Object, + section: Some( + 4, + ), + flags: FlagSet(Local), + align: None, + virtual_address: None, + }, + Symbol { + name: ".dwarf_type.156", + demangled_name: None, + address: 7268, + size: 82, + kind: Object, + section: Some( + 4, + ), + flags: FlagSet(Local), + align: None, + virtual_address: None, + }, + Symbol { + name: ".dwarf_type.157", + demangled_name: None, + address: 7366, + size: 17, + kind: Object, + section: Some( + 4, + ), + flags: FlagSet(Local), + align: None, + virtual_address: None, + }, + Symbol { + name: ".dwarf_type.158", + demangled_name: None, + address: 7383, + size: 6, + kind: Object, + section: Some( + 4, + ), + flags: FlagSet(Local), + align: None, + virtual_address: None, + }, + Symbol { + name: ".dwarf_type.159", + demangled_name: None, + address: 7389, + size: 17, + kind: Object, + section: Some( + 4, + ), + flags: FlagSet(Local), + align: None, + virtual_address: None, + }, + Symbol { + name: ".dwarf_type.160", + demangled_name: None, + address: 7406, + size: 6, + kind: Object, + section: Some( + 4, + ), + flags: FlagSet(Local), + align: None, + virtual_address: None, + }, + Symbol { + name: ".dwarf_type.161", + demangled_name: None, + address: 7412, + size: 17, + kind: Object, + section: Some( + 4, + ), + flags: FlagSet(Local), + align: None, + virtual_address: None, + }, + Symbol { + name: ".dwarf_type.162", + demangled_name: None, + address: 7429, + size: 6, + kind: Object, + section: Some( + 4, + ), + flags: FlagSet(Local), + align: None, + virtual_address: None, + }, + Symbol { + name: ".dwarf_type.163", + demangled_name: None, + address: 7435, + size: 17, + kind: Object, + section: Some( + 4, + ), + flags: FlagSet(Local), + align: None, + virtual_address: None, + }, + Symbol { + name: ".dwarf_type.164", + demangled_name: None, + address: 7452, + size: 6, + kind: Object, + section: Some( + 4, + ), + flags: FlagSet(Local), + align: None, + virtual_address: None, + }, + Symbol { + name: ".dwarf_type.165", + demangled_name: None, + address: 7458, + size: 6, + kind: Object, + section: Some( + 4, + ), + flags: FlagSet(Local), + align: None, + virtual_address: None, + }, + Symbol { + name: ".dwarf_type.166", + demangled_name: None, + address: 7464, + size: 6, + kind: Object, + section: Some( + 4, + ), + flags: FlagSet(Local), + align: None, + virtual_address: None, + }, + Symbol { + name: ".dwarf_type.167", + demangled_name: None, + address: 7470, + size: 6, + kind: Object, + section: Some( + 4, + ), + flags: FlagSet(Local), + align: None, + virtual_address: None, + }, + Symbol { + name: ".dwarf_type.168", + demangled_name: None, + address: 7476, + size: 6, + kind: Object, + section: Some( + 4, + ), + flags: FlagSet(Local), + align: None, + virtual_address: None, + }, + Symbol { + name: ".dwarf_type.169", + demangled_name: None, + address: 7482, + size: 22, + kind: Object, + section: Some( + 4, + ), + flags: FlagSet(Local), + align: None, + virtual_address: None, + }, + Symbol { + name: ".dwarf_type.170", + demangled_name: None, + address: 7517, + size: 17, + kind: Object, + section: Some( + 4, + ), + flags: FlagSet(Local), + align: None, + virtual_address: None, + }, + Symbol { + name: ".dwarf_type.171", + demangled_name: None, + address: 7534, + size: 17, + kind: Object, + section: Some( + 4, + ), + flags: FlagSet(Local), + align: None, + virtual_address: None, + }, + Symbol { + name: ".dwarf_type.172", + demangled_name: None, + address: 7551, + size: 17, + kind: Object, + section: Some( + 4, + ), + flags: FlagSet(Local), + align: None, + virtual_address: None, + }, + Symbol { + name: ".dwarf_type.173", + demangled_name: None, + address: 7568, + size: 204, + kind: Object, + section: Some( + 4, + ), + flags: FlagSet(Local), + align: None, + virtual_address: None, + }, + Symbol { + name: ".dwarf_type.174", + demangled_name: None, + address: 7798, + size: 17, + kind: Object, + section: Some( + 4, + ), + flags: FlagSet(Local), + align: None, + virtual_address: None, + }, + Symbol { + name: ".dwarf_type.175", + demangled_name: None, + address: 7815, + size: 48, + kind: Object, + section: Some( + 4, + ), + flags: FlagSet(Local), + align: None, + virtual_address: None, + }, + Symbol { + name: ".dwarf_type.176", + demangled_name: None, + address: 7880, + size: 17, + kind: Object, + section: Some( + 4, + ), + flags: FlagSet(Local), + align: None, + virtual_address: None, + }, + Symbol { + name: ".dwarf_type.177", + demangled_name: None, + address: 7897, + size: 81, + kind: Object, + section: Some( + 4, + ), + flags: FlagSet(Local), + align: None, + virtual_address: None, + }, + Symbol { + name: ".dwarf_type.178", + demangled_name: None, + address: 7999, + size: 6, + kind: Object, + section: Some( + 4, + ), + flags: FlagSet(Local), + align: None, + virtual_address: None, + }, + Symbol { + name: ".dwarf_type.179", + demangled_name: None, + address: 8005, + size: 39, + kind: Object, + section: Some( + 4, + ), + flags: FlagSet(Local), + align: None, + virtual_address: None, + }, + Symbol { + name: ".dwarf_type.180", + demangled_name: None, + address: 8044, + size: 6, + kind: Object, + section: Some( + 4, + ), + flags: FlagSet(Local), + align: None, + virtual_address: None, + }, + Symbol { + name: ".dwarf_type.181", + demangled_name: None, + address: 8050, + size: 6, + kind: Object, + section: Some( + 4, + ), + flags: FlagSet(Local), + align: None, + virtual_address: None, + }, + Symbol { + name: ".dwarf_type.182", + demangled_name: None, + address: 8056, + size: 39, + kind: Object, + section: Some( + 4, + ), + flags: FlagSet(Local), + align: None, + virtual_address: None, + }, + Symbol { + name: ".dwarf_type.183", + demangled_name: None, + address: 8095, + size: 6, + kind: Object, + section: Some( + 4, + ), + flags: FlagSet(Local), + align: None, + virtual_address: None, + }, + Symbol { + name: ".dwarf_type.184", + demangled_name: None, + address: 8101, + size: 6, + kind: Object, + section: Some( + 4, + ), + flags: FlagSet(Local), + align: None, + virtual_address: None, + }, + Symbol { + name: ".dwarf_type.185", + demangled_name: None, + address: 8107, + size: 9, + kind: Object, + section: Some( + 4, + ), + flags: FlagSet(Local), + align: None, + virtual_address: None, + }, + Symbol { + name: ".dwarf_type.186", + demangled_name: None, + address: 8116, + size: 6, + kind: Object, + section: Some( + 4, + ), + flags: FlagSet(Local), + align: None, + virtual_address: None, + }, + Symbol { + name: ".dwarf_type.187", + demangled_name: None, + address: 8122, + size: 61, + kind: Object, + section: Some( + 4, + ), + flags: FlagSet(Local), + align: None, + virtual_address: None, + }, + Symbol { + name: ".dwarf_type.188", + demangled_name: None, + address: 8231, + size: 6, + kind: Object, + section: Some( + 4, + ), + flags: FlagSet(Local), + align: None, + virtual_address: None, + }, + Symbol { + name: ".dwarf_type.189", + demangled_name: None, + address: 8237, + size: 17, + kind: Object, + section: Some( + 4, + ), + flags: FlagSet(Local), + align: None, + virtual_address: None, + }, + Symbol { + name: ".dwarf_type.190", + demangled_name: None, + address: 8254, + size: 142, + kind: Object, + section: Some( + 4, + ), + flags: FlagSet(Local), + align: None, + virtual_address: None, + }, + Symbol { + name: ".dwarf_type.191", + demangled_name: None, + address: 8412, + size: 6, + kind: Object, + section: Some( + 4, + ), + flags: FlagSet(Local), + align: None, + virtual_address: None, + }, + Symbol { + name: ".dwarf_type.192", + demangled_name: None, + address: 8418, + size: 6, + kind: Object, + section: Some( + 4, + ), + flags: FlagSet(Local), + align: None, + virtual_address: None, + }, + Symbol { + name: ".dwarf_type.193", + demangled_name: None, + address: 8424, + size: 6, + kind: Object, + section: Some( + 4, + ), + flags: FlagSet(Local), + align: None, + virtual_address: None, + }, + Symbol { + name: ".dwarf_type.194", + demangled_name: None, + address: 8430, + size: 17, + kind: Object, + section: Some( + 4, + ), + flags: FlagSet(Local), + align: None, + virtual_address: None, + }, + Symbol { + name: ".dwarf_type.195", + demangled_name: None, + address: 8447, + size: 53, + kind: Object, + section: Some( + 4, + ), + flags: FlagSet(Local), + align: None, + virtual_address: None, + }, + Symbol { + name: ".dwarf_type.196", + demangled_name: None, + address: 8525, + size: 6, + kind: Object, + section: Some( + 4, + ), + flags: FlagSet(Local), + align: None, + virtual_address: None, + }, + Symbol { + name: ".dwarf_type.197", + demangled_name: None, + address: 8531, + size: 45, + kind: Object, + section: Some( + 4, + ), + flags: FlagSet(Local), + align: None, + virtual_address: None, + }, + Symbol { + name: ".dwarf_type.198", + demangled_name: None, + address: 8594, + size: 17, + kind: Object, + section: Some( + 4, + ), + flags: FlagSet(Local), + align: None, + virtual_address: None, + }, + Symbol { + name: ".dwarf_type.199", + demangled_name: None, + address: 8611, + size: 17, + kind: Object, + section: Some( + 4, + ), + flags: FlagSet(Local), + align: None, + virtual_address: None, + }, + Symbol { + name: ".dwarf_type.200", + demangled_name: None, + address: 8628, + size: 120, + kind: Object, + section: Some( + 4, + ), + flags: FlagSet(Local), + align: None, + virtual_address: None, + }, + Symbol { + name: ".dwarf_type.201", + demangled_name: None, + address: 8771, + size: 55, + kind: Object, + section: Some( + 4, + ), + flags: FlagSet(Local), + align: None, + virtual_address: None, + }, + Symbol { + name: ".dwarf_type.202", + demangled_name: None, + address: 8826, + size: 116, + kind: Object, + section: Some( + 4, + ), + flags: FlagSet(Local), + align: None, + virtual_address: None, + }, + Symbol { + name: ".dwarf_type.203", + demangled_name: None, + address: 8942, + size: 195, + kind: Object, + section: Some( + 4, + ), + flags: FlagSet(Local), + align: None, + virtual_address: None, + }, + Symbol { + name: ".dwarf_type.204", + demangled_name: None, + address: 9137, + size: 75, + kind: Object, + section: Some( + 4, + ), + flags: FlagSet(Local), + align: None, + virtual_address: None, + }, + Symbol { + name: ".dwarf_type.205", + demangled_name: None, + address: 9212, + size: 132, + kind: Object, + section: Some( + 4, + ), + flags: FlagSet(Local), + align: None, + virtual_address: None, + }, + Symbol { + name: ".dwarf_type.206", + demangled_name: None, + address: 9344, + size: 17, + kind: Object, + section: Some( + 4, + ), + flags: FlagSet(Local), + align: None, + virtual_address: None, + }, + Symbol { + name: ".dwarf_type.207", + demangled_name: None, + address: 9361, + size: 70, + kind: Object, + section: Some( + 4, + ), + flags: FlagSet(Local), + align: None, + virtual_address: None, + }, + Symbol { + name: ".dwarf_type.208", + demangled_name: None, + address: 9443, + size: 17, + kind: Object, + section: Some( + 4, + ), + flags: FlagSet(Local), + align: None, + virtual_address: None, + }, + Symbol { + name: ".dwarf_type.209", + demangled_name: None, + address: 9460, + size: 6, + kind: Object, + section: Some( + 4, + ), + flags: FlagSet(Local), + align: None, + virtual_address: None, + }, + Symbol { + name: ".dwarf_type.210", + demangled_name: None, + address: 9466, + size: 17, + kind: Object, + section: Some( + 4, + ), + flags: FlagSet(Local), + align: None, + virtual_address: None, + }, + Symbol { + name: ".dwarf_type.211", + demangled_name: None, + address: 9483, + size: 6, + kind: Object, + section: Some( + 4, + ), + flags: FlagSet(Local), + align: None, + virtual_address: None, + }, + Symbol { + name: ".dwarf_type.212", + demangled_name: None, + address: 9489, + size: 6, + kind: Object, + section: Some( + 4, + ), + flags: FlagSet(Local), + align: None, + virtual_address: None, + }, + Symbol { + name: ".dwarf_type.213", + demangled_name: None, + address: 9495, + size: 6, + kind: Object, + section: Some( + 4, + ), + flags: FlagSet(Local), + align: None, + virtual_address: None, + }, + Symbol { + name: ".dwarf_type.214", + demangled_name: None, + address: 9501, + size: 48, + kind: Object, + section: Some( + 4, + ), + flags: FlagSet(Local), + align: None, + virtual_address: None, + }, + Symbol { + name: ".dwarf_type.215", + demangled_name: None, + address: 9563, + size: 17, + kind: Object, + section: Some( + 4, + ), + flags: FlagSet(Local), + align: None, + virtual_address: None, + }, + Symbol { + name: ".dwarf_type.216", + demangled_name: None, + address: 9580, + size: 89, + kind: Object, + section: Some( + 4, + ), + flags: FlagSet(Local), + align: None, + virtual_address: None, + }, + Symbol { + name: ".dwarf_type.217", + demangled_name: None, + address: 9669, + size: 33, + kind: Object, + section: Some( + 4, + ), + flags: FlagSet(Local), + align: None, + virtual_address: None, + }, + Symbol { + name: ".dwarf_type.218", + demangled_name: None, + address: 9716, + size: 17, + kind: Object, + section: Some( + 4, + ), + flags: FlagSet(Local), + align: None, + virtual_address: None, + }, + Symbol { + name: ".dwarf_type.219", + demangled_name: None, + address: 9733, + size: 73, + kind: Object, + section: Some( + 4, + ), + flags: FlagSet(Local), + align: None, + virtual_address: None, + }, + Symbol { + name: ".dwarf_type.220", + demangled_name: None, + address: 9817, + size: 17, + kind: Object, + section: Some( + 4, + ), + flags: FlagSet(Local), + align: None, + virtual_address: None, + }, + Symbol { + name: ".dwarf_type.221", + demangled_name: None, + address: 9834, + size: 17, + kind: Object, + section: Some( + 4, + ), + flags: FlagSet(Local), + align: None, + virtual_address: None, + }, + Symbol { + name: ".dwarf_type.222", + demangled_name: None, + address: 9851, + size: 6, + kind: Object, + section: Some( + 4, + ), + flags: FlagSet(Local), + align: None, + virtual_address: None, + }, + Symbol { + name: ".dwarf_type.223", + demangled_name: None, + address: 9857, + size: 202, + kind: Object, + section: Some( + 4, + ), + flags: FlagSet(Local), + align: None, + virtual_address: None, + }, + Symbol { + name: ".dwarf_type.224", + demangled_name: None, + address: 10078, + size: 234, + kind: Object, + section: Some( + 4, + ), + flags: FlagSet(Local), + align: None, + virtual_address: None, + }, + Symbol { + name: ".dwarf_type.225", + demangled_name: None, + address: 10312, + size: 197, + kind: Object, + section: Some( + 4, + ), + flags: FlagSet(Local), + align: None, + virtual_address: None, + }, + Symbol { + name: ".dwarf_type.226", + demangled_name: None, + address: 10509, + size: 6, + kind: Object, + section: Some( + 4, + ), + flags: FlagSet(Local), + align: None, + virtual_address: None, + }, + Symbol { + name: ".dwarf_type.227", + demangled_name: None, + address: 10515, + size: 6, + kind: Object, + section: Some( + 4, + ), + flags: FlagSet(Local), + align: None, + virtual_address: None, + }, + Symbol { + name: ".dwarf_type.228", + demangled_name: None, + address: 10521, + size: 107, + kind: Object, + section: Some( + 4, + ), + flags: FlagSet(Local), + align: None, + virtual_address: None, + }, + Symbol { + name: ".dwarf_type.229", + demangled_name: None, + address: 10649, + size: 17, + kind: Object, + section: Some( + 4, + ), + flags: FlagSet(Local), + align: None, + virtual_address: None, + }, + Symbol { + name: ".dwarf_type.230", + demangled_name: None, + address: 10666, + size: 17, + kind: Object, + section: Some( + 4, + ), + flags: FlagSet(Local), + align: None, + virtual_address: None, + }, + Symbol { + name: ".dwarf_type.231", + demangled_name: None, + address: 10683, + size: 17, + kind: Object, + section: Some( + 4, + ), + flags: FlagSet(Local), + align: None, + virtual_address: None, + }, + Symbol { + name: ".dwarf_type.232", + demangled_name: None, + address: 10700, + size: 17, + kind: Object, + section: Some( + 4, + ), + flags: FlagSet(Local), + align: None, + virtual_address: None, + }, + Symbol { + name: ".dwarf_type.233", + demangled_name: None, + address: 10717, + size: 17, + kind: Object, + section: Some( + 4, + ), + flags: FlagSet(Local), + align: None, + virtual_address: None, + }, + Symbol { + name: ".dwarf_type.234", + demangled_name: None, + address: 10734, + size: 66, + kind: Object, + section: Some( + 4, + ), + flags: FlagSet(Local), + align: None, + virtual_address: None, + }, + Symbol { + name: ".dwarf_type.235", + demangled_name: None, + address: 10819, + size: 17, + kind: Object, + section: Some( + 4, + ), + flags: FlagSet(Local), + align: None, + virtual_address: None, + }, + Symbol { + name: ".dwarf_type.236", + demangled_name: None, + address: 10836, + size: 25, + kind: Object, + section: Some( + 4, + ), + flags: FlagSet(Local), + align: None, + virtual_address: None, + }, + Symbol { + name: ".dwarf_type.237", + demangled_name: None, + address: 10896, + size: 17, + kind: Object, + section: Some( + 4, + ), + flags: FlagSet(Local), + align: None, + virtual_address: None, + }, + Symbol { + name: ".dwarf_type.238", + demangled_name: None, + address: 10913, + size: 17, + kind: Object, + section: Some( + 4, + ), + flags: FlagSet(Local), + align: None, + virtual_address: None, + }, + Symbol { + name: ".dwarf_type.239", + demangled_name: None, + address: 10930, + size: 17, + kind: Object, + section: Some( + 4, + ), + flags: FlagSet(Local), + align: None, + virtual_address: None, + }, + Symbol { + name: ".dwarf_type.240", + demangled_name: None, + address: 10947, + size: 17, + kind: Object, + section: Some( + 4, + ), + flags: FlagSet(Local), + align: None, + virtual_address: None, + }, + Symbol { + name: ".dwarf_type.241", + demangled_name: None, + address: 10964, + size: 17, + kind: Object, + section: Some( + 4, + ), + flags: FlagSet(Local), + align: None, + virtual_address: None, + }, + Symbol { + name: ".dwarf_type.242", + demangled_name: None, + address: 10981, + size: 17, + kind: Object, + section: Some( + 4, + ), + flags: FlagSet(Local), + align: None, + virtual_address: None, + }, + Symbol { + name: ".dwarf_type.243", + demangled_name: None, + address: 10998, + size: 17, + kind: Object, + section: Some( + 4, + ), + flags: FlagSet(Local), + align: None, + virtual_address: None, + }, + Symbol { + name: ".dwarf_type.244", + demangled_name: None, + address: 11015, + size: 17, + kind: Object, + section: Some( + 4, + ), + flags: FlagSet(Local), + align: None, + virtual_address: None, + }, + Symbol { + name: ".dwarf_type.245", + demangled_name: None, + address: 11032, + size: 17, + kind: Object, + section: Some( + 4, + ), + flags: FlagSet(Local), + align: None, + virtual_address: None, + }, + Symbol { + name: ".dwarf_type.246", + demangled_name: None, + address: 11049, + size: 149, + kind: Object, + section: Some( + 4, + ), + flags: FlagSet(Local), + align: None, + virtual_address: None, + }, + Symbol { + name: ".dwarf_type.247", + demangled_name: None, + address: 11222, + size: 6, + kind: Object, + section: Some( + 4, + ), + flags: FlagSet(Local), + align: None, + virtual_address: None, + }, + Symbol { + name: ".dwarf_type.248", + demangled_name: None, + address: 11228, + size: 83, + kind: Object, + section: Some( + 4, + ), + flags: FlagSet(Local), + align: None, + virtual_address: None, + }, + Symbol { + name: ".dwarf_type.249", + demangled_name: None, + address: 11331, + size: 6, + kind: Object, + section: Some( + 4, + ), + flags: FlagSet(Local), + align: None, + virtual_address: None, + }, + Symbol { + name: ".dwarf_type.250", + demangled_name: None, + address: 11337, + size: 6, + kind: Object, + section: Some( + 4, + ), + flags: FlagSet(Local), + align: None, + virtual_address: None, + }, + Symbol { + name: ".dwarf_type.251", + demangled_name: None, + address: 11343, + size: 6, + kind: Object, + section: Some( + 4, + ), + flags: FlagSet(Local), + align: None, + virtual_address: None, + }, + Symbol { + name: ".dwarf_type.252", + demangled_name: None, + address: 11349, + size: 6, + kind: Object, + section: Some( + 4, + ), + flags: FlagSet(Local), + align: None, + virtual_address: None, + }, + Symbol { + name: ".dwarf_type.253", + demangled_name: None, + address: 11355, + size: 17, + kind: Object, + section: Some( + 4, + ), + flags: FlagSet(Local), + align: None, + virtual_address: None, + }, + Symbol { + name: ".dwarf_type.254", + demangled_name: None, + address: 11372, + size: 17, + kind: Object, + section: Some( + 4, + ), + flags: FlagSet(Local), + align: None, + virtual_address: None, + }, + Symbol { + name: ".dwarf_type.255", + demangled_name: None, + address: 11389, + size: 243, + kind: Object, + section: Some( + 4, + ), + flags: FlagSet(Local), + align: None, + virtual_address: None, + }, + Symbol { + name: ".dwarf_type.256", + demangled_name: None, + address: 11646, + size: 17, + kind: Object, + section: Some( + 4, + ), + flags: FlagSet(Local), + align: None, + virtual_address: None, + }, + Symbol { + name: ".dwarf_type.257", + demangled_name: None, + address: 11663, + size: 6, + kind: Object, + section: Some( + 4, + ), + flags: FlagSet(Local), + align: None, + virtual_address: None, + }, + Symbol { + name: ".dwarf_type.258", + demangled_name: None, + address: 11669, + size: 17, + kind: Object, + section: Some( + 4, + ), + flags: FlagSet(Local), + align: None, + virtual_address: None, + }, + Symbol { + name: ".dwarf_type.259", + demangled_name: None, + address: 11686, + size: 17, + kind: Object, + section: Some( + 4, + ), + flags: FlagSet(Local), + align: None, + virtual_address: None, + }, + Symbol { + name: ".dwarf_type.260", + demangled_name: None, + address: 11703, + size: 17, + kind: Object, + section: Some( + 4, + ), + flags: FlagSet(Local), + align: None, + virtual_address: None, + }, + Symbol { + name: ".dwarf_type.261", + demangled_name: None, + address: 11720, + size: 17, + kind: Object, + section: Some( + 4, + ), + flags: FlagSet(Local), + align: None, + virtual_address: None, + }, + Symbol { + name: ".dwarf_type.262", + demangled_name: None, + address: 11737, + size: 6, + kind: Object, + section: Some( + 4, + ), + flags: FlagSet(Local), + align: None, + virtual_address: None, + }, + Symbol { + name: ".dwarf_type.263", + demangled_name: None, + address: 11743, + size: 355, + kind: Object, + section: Some( + 4, + ), + flags: FlagSet(Local), + align: None, + virtual_address: None, + }, + Symbol { + name: ".dwarf_type.264", + demangled_name: None, + address: 12114, + size: 161, + kind: Object, + section: Some( + 4, + ), + flags: FlagSet(Local), + align: None, + virtual_address: None, + }, + Symbol { + name: ".dwarf_type.265", + demangled_name: None, + address: 12275, + size: 122, + kind: Object, + section: Some( + 4, + ), + flags: FlagSet(Local), + align: None, + virtual_address: None, + }, + Symbol { + name: ".dwarf_type.266", + demangled_name: None, + address: 12397, + size: 6, + kind: Object, + section: Some( + 4, + ), + flags: FlagSet(Local), + align: None, + virtual_address: None, + }, + Symbol { + name: ".dwarf_type.267", + demangled_name: None, + address: 12403, + size: 55, + kind: Object, + section: Some( + 4, + ), + flags: FlagSet(Local), + align: None, + virtual_address: None, + }, + Symbol { + name: ".dwarf_type.268", + demangled_name: None, + address: 12472, + size: 17, + kind: Object, + section: Some( + 4, + ), + flags: FlagSet(Local), + align: None, + virtual_address: None, + }, + Symbol { + name: ".dwarf_type.269", + demangled_name: None, + address: 12489, + size: 75, + kind: Object, + section: Some( + 4, + ), + flags: FlagSet(Local), + align: None, + virtual_address: None, + }, + Symbol { + name: ".dwarf_type.270", + demangled_name: None, + address: 12576, + size: 17, + kind: Object, + section: Some( + 4, + ), + flags: FlagSet(Local), + align: None, + virtual_address: None, + }, + Symbol { + name: ".dwarf_type.271", + demangled_name: None, + address: 12593, + size: 17, + kind: Object, + section: Some( + 4, + ), + flags: FlagSet(Local), + align: None, + virtual_address: None, + }, + Symbol { + name: ".dwarf_type.272", + demangled_name: None, + address: 12610, + size: 145, + kind: Object, + section: Some( + 4, + ), + flags: FlagSet(Local), + align: None, + virtual_address: None, + }, + Symbol { + name: ".dwarf_type.273", + demangled_name: None, + address: 12783, + size: 17, + kind: Object, + section: Some( + 4, + ), + flags: FlagSet(Local), + align: None, + virtual_address: None, + }, + Symbol { + name: ".dwarf_type.274", + demangled_name: None, + address: 12800, + size: 17, + kind: Object, + section: Some( + 4, + ), + flags: FlagSet(Local), + align: None, + virtual_address: None, + }, + Symbol { + name: ".dwarf_type.275", + demangled_name: None, + address: 12817, + size: 65, + kind: Object, + section: Some( + 4, + ), + flags: FlagSet(Local), + align: None, + virtual_address: None, + }, + Symbol { + name: ".dwarf_type.276", + demangled_name: None, + address: 12903, + size: 17, + kind: Object, + section: Some( + 4, + ), + flags: FlagSet(Local), + align: None, + virtual_address: None, + }, + Symbol { + name: ".dwarf_type.277", + demangled_name: None, + address: 12920, + size: 17, + kind: Object, + section: Some( + 4, + ), + flags: FlagSet(Local), + align: None, + virtual_address: None, + }, + Symbol { + name: ".dwarf_type.278", + demangled_name: None, + address: 12937, + size: 33, + kind: Object, + section: Some( + 4, + ), + flags: FlagSet(Local), + align: None, + virtual_address: None, + }, + Symbol { + name: ".dwarf_type.279", + demangled_name: None, + address: 12986, + size: 17, + kind: Object, + section: Some( + 4, + ), + flags: FlagSet(Local), + align: None, + virtual_address: None, + }, + Symbol { + name: ".dwarf_type.280", + demangled_name: None, + address: 13003, + size: 17, + kind: Object, + section: Some( + 4, + ), + flags: FlagSet(Local), + align: None, + virtual_address: None, + }, + Symbol { + name: ".dwarf_type.281", + demangled_name: None, + address: 13020, + size: 174, + kind: Object, + section: Some( + 4, + ), + flags: FlagSet(Local), + align: None, + virtual_address: None, + }, + Symbol { + name: ".dwarf_type.282", + demangled_name: None, + address: 13211, + size: 17, + kind: Object, + section: Some( + 4, + ), + flags: FlagSet(Local), + align: None, + virtual_address: None, + }, + Symbol { + name: ".dwarf_type.283", + demangled_name: None, + address: 13228, + size: 17, + kind: Object, + section: Some( + 4, + ), + flags: FlagSet(Local), + align: None, + virtual_address: None, + }, + Symbol { + name: ".dwarf_type.284", + demangled_name: None, + address: 13245, + size: 17, + kind: Object, + section: Some( + 4, + ), + flags: FlagSet(Local), + align: None, + virtual_address: None, + }, + Symbol { + name: ".dwarf_type.285", + demangled_name: None, + address: 13262, + size: 6, + kind: Object, + section: Some( + 4, + ), + flags: FlagSet(Local), + align: None, + virtual_address: None, + }, + Symbol { + name: ".dwarf_type.286", + demangled_name: None, + address: 13268, + size: 183, + kind: Object, + section: Some( + 4, + ), + flags: FlagSet(Local), + align: None, + virtual_address: None, + }, + Symbol { + name: ".dwarf_type.287", + demangled_name: None, + address: 13468, + size: 6, + kind: Object, + section: Some( + 4, + ), + flags: FlagSet(Local), + align: None, + virtual_address: None, + }, + Symbol { + name: ".dwarf_type.288", + demangled_name: None, + address: 13474, + size: 6, + kind: Object, + section: Some( + 4, + ), + flags: FlagSet(Local), + align: None, + virtual_address: None, + }, + Symbol { + name: ".dwarf_line.THUMB_BRANCH_ServerDisplay_UncategorizedMove", + demangled_name: None, + address: 91, + size: 89, + kind: Object, + section: Some( + 9, + ), + flags: FlagSet(Local), + align: None, + virtual_address: None, + }, + Symbol { + name: "THUMB_BRANCH_ServerDisplay_UncategorizedMove", + demangled_name: None, + address: 0, + size: 244, + kind: Function, + section: Some( + 17, + ), + flags: FlagSet(Global), + align: None, + virtual_address: None, + }, + Symbol { + name: "PokeSet_IsRemovedAll", + demangled_name: None, + address: 0, + size: 0, + kind: Unknown, + section: None, + flags: FlagSet(Global), + align: None, + virtual_address: None, + }, + Symbol { + name: "ServerDisplay_SkillSwap", + demangled_name: None, + address: 0, + size: 0, + kind: Unknown, + section: None, + flags: FlagSet(Global), + align: None, + virtual_address: None, + }, + Symbol { + name: "ServerEvent_CreateSubstitute", + demangled_name: None, + address: 0, + size: 0, + kind: Unknown, + section: None, + flags: FlagSet(Global), + align: None, + virtual_address: None, + }, + Symbol { + name: "HEManager_PushState", + demangled_name: None, + address: 0, + size: 0, + kind: Unknown, + section: None, + flags: FlagSet(Global), + align: None, + virtual_address: None, + }, + Symbol { + name: "BattleHandler_Result", + demangled_name: None, + address: 0, + size: 0, + kind: Unknown, + section: None, + flags: FlagSet(Global), + align: None, + virtual_address: None, + }, + Symbol { + name: "ServerEvent_UncategorizedMove", + demangled_name: None, + address: 0, + size: 0, + kind: Unknown, + section: None, + flags: FlagSet(Global), + align: None, + virtual_address: None, + }, + Symbol { + name: "SCQUE_PUT_MsgImpl", + demangled_name: None, + address: 0, + size: 0, + kind: Unknown, + section: None, + flags: FlagSet(Global), + align: None, + virtual_address: None, + }, + Symbol { + name: "HEManager_PopState", + demangled_name: None, + address: 0, + size: 0, + kind: Unknown, + section: None, + flags: FlagSet(Global), + align: None, + virtual_address: None, + }, + Symbol { + name: ".dwarf_type.void", + demangled_name: None, + address: 70, + size: 12, + kind: Object, + section: Some( + 4, + ), + flags: FlagSet(Global | Weak), + align: None, + virtual_address: None, + }, + Symbol { + name: ".dwarf_typedef.ServerFlow", + demangled_name: None, + address: 2011, + size: 17, + kind: Object, + section: Some( + 4, + ), + flags: FlagSet(Global | Weak), + align: None, + virtual_address: None, + }, + Symbol { + name: ".dwarf_typedef.BTL_SERVER", + demangled_name: None, + address: 2700, + size: 17, + kind: Object, + section: Some( + 4, + ), + flags: FlagSet(Global | Weak), + align: None, + virtual_address: None, + }, + Symbol { + name: ".dwarf_type.int", + demangled_name: None, + address: 2762, + size: 11, + kind: Object, + section: Some( + 4, + ), + flags: FlagSet(Global | Weak), + align: None, + virtual_address: None, + }, + Symbol { + name: ".dwarf_typedef.bool", + demangled_name: None, + address: 2773, + size: 11, + kind: Object, + section: Some( + 4, + ), + flags: FlagSet(Global | Weak), + align: None, + virtual_address: None, + }, + Symbol { + name: ".dwarf_typedef.fx32", + demangled_name: None, + address: 2784, + size: 11, + kind: Object, + section: Some( + 4, + ), + flags: FlagSet(Global | Weak), + align: None, + virtual_address: None, + }, + Symbol { + name: ".dwarf_typedef.s32", + demangled_name: None, + address: 2795, + size: 10, + kind: Object, + section: Some( + 4, + ), + flags: FlagSet(Global | Weak), + align: None, + virtual_address: None, + }, + Symbol { + name: ".dwarf_typedef.int32_t", + demangled_name: None, + address: 2805, + size: 14, + kind: Object, + section: Some( + 4, + ), + flags: FlagSet(Global | Weak), + align: None, + virtual_address: None, + }, + Symbol { + name: ".dwarf_typedef.BTL_MAIN_MODULE", + demangled_name: None, + address: 4348, + size: 22, + kind: Object, + section: Some( + 4, + ), + flags: FlagSet(Global | Weak), + align: None, + virtual_address: None, + }, + Symbol { + name: ".dwarf_typedef.BATTLE_SETUP_PARAM", + demangled_name: None, + address: 5575, + size: 25, + kind: Object, + section: Some( + 4, + ), + flags: FlagSet(Global | Weak), + align: None, + virtual_address: None, + }, + Symbol { + name: ".dwarf_type.unsigned int", + demangled_name: None, + address: 5600, + size: 20, + kind: Object, + section: Some( + 4, + ), + flags: FlagSet(Global | Weak), + align: None, + virtual_address: None, + }, + Symbol { + name: ".dwarf_typedef.uint32_t", + demangled_name: None, + address: 5620, + size: 15, + kind: Object, + section: Some( + 4, + ), + flags: FlagSet(Global | Weak), + align: None, + virtual_address: None, + }, + Symbol { + name: ".dwarf_typedef.uptr", + demangled_name: None, + address: 5635, + size: 11, + kind: Object, + section: Some( + 4, + ), + flags: FlagSet(Global | Weak), + align: None, + virtual_address: None, + }, + Symbol { + name: ".dwarf_typedef.uintptr_t", + demangled_name: None, + address: 5646, + size: 16, + kind: Object, + section: Some( + 4, + ), + flags: FlagSet(Global | Weak), + align: None, + virtual_address: None, + }, + Symbol { + name: ".dwarf_typedef.u32", + demangled_name: None, + address: 5662, + size: 10, + kind: Object, + section: Some( + 4, + ), + flags: FlagSet(Global | Weak), + align: None, + virtual_address: None, + }, + Symbol { + name: ".dwarf_type.unsigned char", + demangled_name: None, + address: 5689, + size: 21, + kind: Object, + section: Some( + 4, + ), + flags: FlagSet(Global | Weak), + align: None, + virtual_address: None, + }, + Symbol { + name: ".dwarf_typedef.BtlPokePos", + demangled_name: None, + address: 5710, + size: 17, + kind: Object, + section: Some( + 4, + ), + flags: FlagSet(Global | Weak), + align: None, + virtual_address: None, + }, + Symbol { + name: ".dwarf_typedef.u8", + demangled_name: None, + address: 5727, + size: 9, + kind: Object, + section: Some( + 4, + ), + flags: FlagSet(Global | Weak), + align: None, + virtual_address: None, + }, + Symbol { + name: ".dwarf_typedef.uint8_t", + demangled_name: None, + address: 5736, + size: 14, + kind: Object, + section: Some( + 4, + ), + flags: FlagSet(Global | Weak), + align: None, + virtual_address: None, + }, + Symbol { + name: ".dwarf_type.unsigned short", + demangled_name: None, + address: 5750, + size: 22, + kind: Object, + section: Some( + 4, + ), + flags: FlagSet(Global | Weak), + align: None, + virtual_address: None, + }, + Symbol { + name: ".dwarf_typedef.uint16_t", + demangled_name: None, + address: 5772, + size: 15, + kind: Object, + section: Some( + 4, + ), + flags: FlagSet(Global | Weak), + align: None, + virtual_address: None, + }, + Symbol { + name: ".dwarf_typedef.u16", + demangled_name: None, + address: 5787, + size: 10, + kind: Object, + section: Some( + 4, + ), + flags: FlagSet(Global | Weak), + align: None, + virtual_address: None, + }, + Symbol { + name: ".dwarf_type.TINYMT32_T", + demangled_name: None, + address: 5999, + size: 74, + kind: Object, + section: Some( + 4, + ), + flags: FlagSet(Global | Weak), + align: None, + virtual_address: None, + }, + Symbol { + name: ".dwarf_typedef.tinymt32_t", + demangled_name: None, + address: 6073, + size: 17, + kind: Object, + section: Some( + 4, + ), + flags: FlagSet(Global | Weak), + align: None, + virtual_address: None, + }, + Symbol { + name: ".dwarf_typedef.BATTLE_KENTEI_RESULT", + demangled_name: None, + address: 6396, + size: 27, + kind: Object, + section: Some( + 4, + ), + flags: FlagSet(Global | Weak), + align: None, + virtual_address: None, + }, + Symbol { + name: ".dwarf_typedef.TRAINER_DATA", + demangled_name: None, + address: 6863, + size: 19, + kind: Object, + section: Some( + 4, + ), + flags: FlagSet(Global | Weak), + align: None, + virtual_address: None, + }, + Symbol { + name: ".dwarf_typedef.POKECON", + demangled_name: None, + address: 7067, + size: 14, + kind: Object, + section: Some( + 4, + ), + flags: FlagSet(Global | Weak), + align: None, + virtual_address: None, + }, + Symbol { + name: ".dwarf_typedef.BTL_PARTY", + demangled_name: None, + address: 7206, + size: 16, + kind: Object, + section: Some( + 4, + ), + flags: FlagSet(Global | Weak), + align: None, + virtual_address: None, + }, + Symbol { + name: ".dwarf_typedef.PokeParty", + demangled_name: None, + address: 7350, + size: 16, + kind: Object, + section: Some( + 4, + ), + flags: FlagSet(Global | Weak), + align: None, + virtual_address: None, + }, + Symbol { + name: ".dwarf_typedef.Reader", + demangled_name: None, + address: 7504, + size: 13, + kind: Object, + section: Some( + 4, + ), + flags: FlagSet(Global | Weak), + align: None, + virtual_address: None, + }, + Symbol { + name: ".dwarf_typedef.SERVER_NOTIFY_PARAM", + demangled_name: None, + address: 7772, + size: 26, + kind: Object, + section: Some( + 4, + ), + flags: FlagSet(Global | Weak), + align: None, + virtual_address: None, + }, + Symbol { + name: ".dwarf_typedef.EscapeInfo", + demangled_name: None, + address: 7863, + size: 17, + kind: Object, + section: Some( + 4, + ), + flags: FlagSet(Global | Weak), + align: None, + virtual_address: None, + }, + Symbol { + name: ".dwarf_typedef.unk_struct_450", + demangled_name: None, + address: 7978, + size: 21, + kind: Object, + section: Some( + 4, + ), + flags: FlagSet(Global | Weak), + align: None, + virtual_address: None, + }, + Symbol { + name: ".dwarf_typedef.struct_unk478", + demangled_name: None, + address: 8183, + size: 20, + kind: Object, + section: Some( + 4, + ), + flags: FlagSet(Global | Weak), + align: None, + virtual_address: None, + }, + Symbol { + name: ".dwarf_type.signed char", + demangled_name: None, + address: 8203, + size: 19, + kind: Object, + section: Some( + 4, + ), + flags: FlagSet(Global | Weak), + align: None, + virtual_address: None, + }, + Symbol { + name: ".dwarf_typedef.s8", + demangled_name: None, + address: 8222, + size: 9, + kind: Object, + section: Some( + 4, + ), + flags: FlagSet(Global | Weak), + align: None, + virtual_address: None, + }, + Symbol { + name: ".dwarf_typedef.SVCL_WORK", + demangled_name: None, + address: 8396, + size: 16, + kind: Object, + section: Some( + 4, + ), + flags: FlagSet(Global | Weak), + align: None, + virtual_address: None, + }, + Symbol { + name: ".dwarf_typedef.BTL_RESULT_CONTEXT", + demangled_name: None, + address: 8500, + size: 25, + kind: Object, + section: Some( + 4, + ), + flags: FlagSet(Global | Weak), + align: None, + virtual_address: None, + }, + Symbol { + name: ".dwarf_typedef.SVCL_ACTION", + demangled_name: None, + address: 8576, + size: 18, + kind: Object, + section: Some( + 4, + ), + flags: FlagSet(Global | Weak), + align: None, + virtual_address: None, + }, + Symbol { + name: ".dwarf_typedef.BTL_ACTION_PARAM", + demangled_name: None, + address: 8748, + size: 23, + kind: Object, + section: Some( + 4, + ), + flags: FlagSet(Global | Weak), + align: None, + virtual_address: None, + }, + Symbol { + name: ".dwarf_typedef.SCQUE", + demangled_name: None, + address: 9431, + size: 12, + kind: Object, + section: Some( + 4, + ), + flags: FlagSet(Global | Weak), + align: None, + virtual_address: None, + }, + Symbol { + name: ".dwarf_typedef.WazaRec", + demangled_name: None, + address: 9549, + size: 14, + kind: Object, + section: Some( + 4, + ), + flags: FlagSet(Global | Weak), + align: None, + virtual_address: None, + }, + Symbol { + name: ".dwarf_typedef.DeadRec", + demangled_name: None, + address: 9702, + size: 14, + kind: Object, + section: Some( + 4, + ), + flags: FlagSet(Global | Weak), + align: None, + virtual_address: None, + }, + Symbol { + name: ".dwarf_typedef.Unit", + demangled_name: None, + address: 9806, + size: 11, + kind: Object, + section: Some( + 4, + ), + flags: FlagSet(Global | Weak), + align: None, + virtual_address: None, + }, + Symbol { + name: ".dwarf_typedef.WAZAEFF_CTRL", + demangled_name: None, + address: 10059, + size: 19, + kind: Object, + section: Some( + 4, + ), + flags: FlagSet(Global | Weak), + align: None, + virtual_address: None, + }, + Symbol { + name: ".dwarf_typedef.WAZA_ROB_PARAM", + demangled_name: None, + address: 10628, + size: 21, + kind: Object, + section: Some( + 4, + ), + flags: FlagSet(Global | Weak), + align: None, + virtual_address: None, + }, + Symbol { + name: ".dwarf_typedef.CLIENTID_REC", + demangled_name: None, + address: 10800, + size: 19, + kind: Object, + section: Some( + 4, + ), + flags: FlagSet(Global | Weak), + align: None, + virtual_address: None, + }, + Symbol { + name: ".dwarf_typedef.ROTATION_HANDLER_WORK_BACKUP", + demangled_name: None, + address: 10861, + size: 35, + kind: Object, + section: Some( + 4, + ), + flags: FlagSet(Global | Weak), + align: None, + virtual_address: None, + }, + Symbol { + name: ".dwarf_typedef.ACTION_ORDER_WORK", + demangled_name: None, + address: 11198, + size: 24, + kind: Object, + section: Some( + 4, + ), + flags: FlagSet(Global | Weak), + align: None, + virtual_address: None, + }, + Symbol { + name: ".dwarf_typedef.BTL_POKEPARAM", + demangled_name: None, + address: 11311, + size: 20, + kind: Object, + section: Some( + 4, + ), + flags: FlagSet(Global | Weak), + align: None, + virtual_address: None, + }, + Symbol { + name: ".dwarf_typedef.POKESET", + demangled_name: None, + address: 11632, + size: 14, + kind: Object, + section: Some( + 4, + ), + flags: FlagSet(Global | Weak), + align: None, + virtual_address: None, + }, + Symbol { + name: ".dwarf_typedef.WAZAPARAM", + demangled_name: None, + address: 12098, + size: 16, + kind: Object, + section: Some( + 4, + ), + flags: FlagSet(Global | Weak), + align: None, + virtual_address: None, + }, + Symbol { + name: ".dwarf_typedef.PosPoke", + demangled_name: None, + address: 12458, + size: 14, + kind: Object, + section: Some( + 4, + ), + flags: FlagSet(Global | Weak), + align: None, + virtual_address: None, + }, + Symbol { + name: ".dwarf_typedef.State", + demangled_name: None, + address: 12564, + size: 12, + kind: Object, + section: Some( + 4, + ), + flags: FlagSet(Global | Weak), + align: None, + virtual_address: None, + }, + Symbol { + name: ".dwarf_typedef.BTL_HANDEX_STR_PARAMS", + demangled_name: None, + address: 12755, + size: 28, + kind: Object, + section: Some( + 4, + ), + flags: FlagSet(Global | Weak), + align: None, + virtual_address: None, + }, + Symbol { + name: ".dwarf_typedef.EventWorkStack", + demangled_name: None, + address: 12882, + size: 21, + kind: Object, + section: Some( + 4, + ), + flags: FlagSet(Global | Weak), + align: None, + virtual_address: None, + }, + Symbol { + name: ".dwarf_typedef.HEManager", + demangled_name: None, + address: 12970, + size: 16, + kind: Object, + section: Some( + 4, + ), + flags: FlagSet(Global | Weak), + align: None, + virtual_address: None, + }, + Symbol { + name: ".dwarf_typedef.AffCounter", + demangled_name: None, + address: 13194, + size: 17, + kind: Object, + section: Some( + 4, + ), + flags: FlagSet(Global | Weak), + align: None, + virtual_address: None, + }, + Symbol { + name: ".dwarf_typedef.MOVE_PARAM", + demangled_name: None, + address: 13451, + size: 17, + kind: Object, + section: Some( + 4, + ), + flags: FlagSet(Global | Weak), + align: None, + virtual_address: None, + }, + Symbol { + name: ".dwarf.THUMB_BRANCH_ServerDisplay_UncategorizedMove", + demangled_name: None, + address: 13480, + size: 243, + kind: Object, + section: Some( + 4, + ), + flags: FlagSet(Global), + align: None, + virtual_address: None, + }, + ], + sections: [ + Section { + id: ".symtab-0", + name: ".symtab", + address: 0, + size: 4240, + kind: Unknown, + data: SectionData( + 0, + ), + flags: FlagSet(), + relocations: [], + line_info: {}, + virtual_address: None, + }, + Section { + id: ".strtab-0", + name: ".strtab", + address: 0, + size: 4913, + kind: Unknown, + data: SectionData( + 0, + ), + flags: FlagSet(), + relocations: [], + line_info: {}, + virtual_address: None, + }, + Section { + id: ".shstrtab-0", + name: ".shstrtab", + address: 0, + size: 243, + kind: Unknown, + data: SectionData( + 0, + ), + flags: FlagSet(), + relocations: [], + line_info: {}, + virtual_address: None, + }, + Section { + id: ".comment-0", + name: ".comment", + address: 0, + size: 36, + kind: Unknown, + data: SectionData( + 0, + ), + flags: FlagSet(), + relocations: [], + line_info: {}, + virtual_address: None, + }, + Section { + id: ".debug_info-0", + name: ".debug_info", + address: 0, + size: 13724, + kind: Unknown, + data: SectionData( + 0, + ), + flags: FlagSet(), + relocations: [], + line_info: {}, + virtual_address: None, + }, + Section { + id: ".rel.debug_info-0", + name: ".rel.debug_info", + address: 0, + size: 7680, + kind: Unknown, + data: SectionData( + 0, + ), + flags: FlagSet(), + relocations: [], + line_info: {}, + virtual_address: None, + }, + Section { + id: ".debug_macinfo-0", + name: ".debug_macinfo", + address: 0, + size: 0, + kind: Unknown, + data: SectionData( + 0, + ), + flags: FlagSet(), + relocations: [], + line_info: {}, + virtual_address: None, + }, + Section { + id: ".debug_loc-0", + name: ".debug_loc", + address: 0, + size: 0, + kind: Unknown, + data: SectionData( + 0, + ), + flags: FlagSet(), + relocations: [], + line_info: {}, + virtual_address: None, + }, + Section { + id: " rel.debug_loc-0", + name: " rel.debug_loc", + address: 0, + size: 0, + kind: Unknown, + data: SectionData( + 0, + ), + flags: FlagSet(), + relocations: [], + line_info: {}, + virtual_address: None, + }, + Section { + id: ".debug_line-0", + name: ".debug_line", + address: 0, + size: 180, + kind: Unknown, + data: SectionData( + 0, + ), + flags: FlagSet(), + relocations: [], + line_info: {}, + virtual_address: None, + }, + Section { + id: ".rel.debug_line-0", + name: ".rel.debug_line", + address: 0, + size: 12, + kind: Unknown, + data: SectionData( + 0, + ), + flags: FlagSet(), + relocations: [], + line_info: {}, + virtual_address: None, + }, + Section { + id: ".debug_line-1", + name: ".debug_line", + address: 0, + size: 0, + kind: Unknown, + data: SectionData( + 0, + ), + flags: FlagSet(), + relocations: [], + line_info: {}, + virtual_address: None, + }, + Section { + id: ".rel.debug_line-1", + name: ".rel.debug_line", + address: 0, + size: 0, + kind: Unknown, + data: SectionData( + 0, + ), + flags: FlagSet(), + relocations: [], + line_info: {}, + virtual_address: None, + }, + Section { + id: ".debug_pubnames-0", + name: ".debug_pubnames", + address: 0, + size: 18, + kind: Unknown, + data: SectionData( + 0, + ), + flags: FlagSet(), + relocations: [], + line_info: {}, + virtual_address: None, + }, + Section { + id: ".rel.debug_pubnames-0", + name: ".rel.debug_pubnames", + address: 0, + size: 0, + kind: Unknown, + data: SectionData( + 0, + ), + flags: FlagSet(), + relocations: [], + line_info: {}, + virtual_address: None, + }, + Section { + id: ".debug_aranges-0", + name: ".debug_aranges", + address: 0, + size: 0, + kind: Unknown, + data: SectionData( + 0, + ), + flags: FlagSet(), + relocations: [], + line_info: {}, + virtual_address: None, + }, + Section { + id: ".debug_abbrev-0", + name: ".debug_abbrev", + address: 0, + size: 211, + kind: Unknown, + data: SectionData( + 0, + ), + flags: FlagSet(), + relocations: [], + line_info: {}, + virtual_address: None, + }, + Section { + id: ".text-0", + name: ".text", + address: 0, + size: 244, + kind: Code, + data: SectionData( + 244, + ), + flags: FlagSet(), + relocations: [ + Relocation { + flags: Elf( + 10, + ), + address: 14, + target_symbol: 196, + addend: -4, + }, + Relocation { + flags: Elf( + 10, + ), + address: 40, + target_symbol: 197, + addend: -4, + }, + Relocation { + flags: Elf( + 10, + ), + address: 52, + target_symbol: 198, + addend: -4, + }, + Relocation { + flags: Elf( + 10, + ), + address: 100, + target_symbol: 199, + addend: -4, + }, + Relocation { + flags: Elf( + 10, + ), + address: 108, + target_symbol: 200, + addend: -4, + }, + Relocation { + flags: Elf( + 10, + ), + address: 126, + target_symbol: 201, + addend: -4, + }, + Relocation { + flags: Elf( + 10, + ), + address: 136, + target_symbol: 200, + addend: -4, + }, + Relocation { + flags: Elf( + 10, + ), + address: 196, + target_symbol: 202, + addend: -4, + }, + Relocation { + flags: Elf( + 10, + ), + address: 208, + target_symbol: 203, + addend: -4, + }, + ], + line_info: { + 0: 37, + 6: 39, + 22: 44, + 34: 47, + 44: 86, + 48: 50, + 60: 52, + 86: 86, + 88: 52, + 92: 86, + 94: 57, + 106: 61, + 114: 63, + 134: 65, + 142: 66, + 146: 68, + 168: 72, + 172: 75, + 188: 77, + 200: 81, + 212: 86, + 244: 86, + }, + virtual_address: None, + }, + Section { + id: ".rela.text-0", + name: ".rela.text", + address: 0, + size: 108, + kind: Unknown, + data: SectionData( + 0, + ), + flags: FlagSet(), + relocations: [], + line_info: {}, + virtual_address: None, + }, + ], + split_meta: None, + path: None, + timestamp: None, +}